MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!

Participe do fórum, é rápido e fácil

MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!
MMORPG Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[EE] Quickfix House e outras opções

Ir para baixo

[EE] Quickfix House e outras opções Empty [EE] Quickfix House e outras opções

Mensagem por wilclefi Ter 02 Fev 2010, 14:32

Aew ese e o emu Primeiro TUTU AKI EM XD




Aqui está um quickfix para a mudança de nomes quando o jogador compra uma casa, e um bônus de venda / comando para a venda de casas. Sempre faça um backup de origem e meter main.txt isso não funciona para você.

Por apenas corrigir o rápido, com Server; modHandleData, procurar;

Código:
Public Sub Packet_BuyHouse(ByVal index As Long)

Substituir o código inteiro com isso;

Código:
Public Sub Packet_BuyHouse(ByVal index As Long)
Dim I As Long
Dim MapNum As Long

MapNum = GetPlayerMap(index)

If Map(MapNum).Tile(GetPlayerX(index), GetPlayerY(index)).Type <> TILE_TYPE_HOUSE Then
Call PlayerMsg(index, "Você precisa estar em uma telha de casa para comprar!", BRIGHTRED)
Exit Sub
End If

If Map(MapNum).Tile(GetPlayerX(index), GetPlayerY(index)).Data1 = 0 Then
Map(MapNum).Owner = GetPlayerName(index)
Map(MapNum).Name = GetPlayerName(index) & "'s House"
Map(MapNum).Revision = Map(MapNum).Revision + 1
Call SaveMap(MapNum)
Call MapCache_Create(MapNum)
Call SendDataToMap(MapNum, "CHECKFORMAP" & SEP_CHAR & MapNum & SEP_CHAR & (Map(MapNum).Revision + 1) & END_CHAR)
Call PlayerMsg(index, "Você agora esta casa própria!", BRIGHTGREEN)

Exit Sub
End If

For I = 1 To MAX_INV
If GetPlayerInvItemNum(index, I) = Map(MapNum).Tile(GetPlayerX(index), GetPlayerY(index)).Data1 Then
If Item(GetPlayerInvItemNum(index, I)).Type = ITEM_TYPE_CURRENCY Then
If GetPlayerInvItemValue(index, I) >= Map(MapNum).Tile(GetPlayerX(index), GetPlayerY(index)).Data2 Then
Call SetPlayerInvItemValue(index, I, GetPlayerInvItemValue(index, I) - Map(MapNum).Tile(GetPlayerX(index), GetPlayerY(index)).Data2)

If GetPlayerInvItemValue(index, I) = 0 Then
Call SetPlayerInvItemNum(index, I, 0)
End If

Map(MapNum).Owner = GetPlayerName(index)
Map(MapNum).Name = GetPlayerName(index) & "'s House"
Map(MapNum).Revision = Map(GetPlayerMap(index)).Revision + 1
Call SaveMap(MapNum)
Call SendInventory(index)
Call PlayerMsg(index, "Você comprou uma casa nova!", BRIGHTGREEN)
Call MapCache_Create(MapNum)
Call SendDataToMap(MapNum, "CHECKFORMAP" & SEP_CHAR & MapNum & SEP_CHAR & (Map(MapNum).Revision + 1) & END_CHAR)
End If
Else
If GetPlayerWeaponSlot(index) <> I And GetPlayerArmorSlot(index) <> I And GetPlayerShieldSlot(index) <> I And GetPlayerHelmetSlot(index) <> I And GetPlayerLegsSlot(index) <> I And GetPlayerRingSlot(index) <> I And GetPlayerNecklaceSlot(index) <> I Then
Call SetPlayerInvItemNum(index, I, 0)

Map(MapNum).Owner = GetPlayerName(index)
Map(MapNum).Name = GetPlayerName(index) & "'s House"
Map(MapNum).Revision = Map(MapNum).Revision + 1

Call SaveMap(MapNum)
Call SendInventory(index)
Call PlayerMsg(index, "Você possui agora uma nova casa!", BRIGHTGREEN)
Call MapCache_Create(MapNum)
Call SendDataToMap(MapNum, "CHECKFORMAP" & SEP_CHAR & MapNum & SEP_CHAR & (Map(MapNum).Revision + 1) & END_CHAR)
End If
End If

If GetPlayerWeaponSlot(index) <> I And GetPlayerArmorSlot(index) <> I And GetPlayerShieldSlot(index) <> I And GetPlayerHelmetSlot(index) <> I And GetPlayerLegsSlot(index) <> I And GetPlayerRingSlot(index) <> I And GetPlayerNecklaceSlot(index) <> I Then
Exit Sub
End If
End If
Next I

Call PlayerMsg(index, "Você não tem o suficiente para comprar esta casa!", BRIGHTRED)
End Sub

-------------------------------------------------- ------------
Desde 2,8 executa os mapas no cache, você tem que recriar o mapa no cache quando os dados forem alterados, caso contrário, os jogadores não verá as mudanças até que sair e voltar, o que é legal também.

Agora, se você deseja adicionar o / venda de comando ...

No modHandleData Server, postos em que os casos são;


Código:
Case "sellhouse"
Call Packet_SellHouse(index)
Exit Sub


Role para baixo, onde os submarinos estão em modHandleData e colocar isto em;

Código:
Public Sub Packet_SellHouse(ByVal index As Long)
Dim I As Long

If Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index)).Type <> TILE_TYPE_HOUSE Then
Call PlayerMsg(index, "Você precisa ser na telha de comprar casa para vendê-lo!", BRIGHTRED)
Exit Sub
End If

If Map(GetPlayerMap(index)).Owner <> GetPlayerName(index) Then
Call PlayerMsg(index, "Você não possui esta casa!", BRIGHTRED)
Exit Sub
End If

For I = 1 To MAX_INV
If GetPlayerInvItemNum(index, I) = Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index)).Data1 Then
If Item(GetPlayerInvItemNum(index, I)).Type = ITEM_TYPE_CURRENCY Then
Call SetPlayerInvItemValue(index, I, GetPlayerInvItemValue(index, I) + (Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index)).Data2 / 2))

If GetPlayerInvItemValue(index, I) = 0 Then
Call SetPlayerInvItemNum(index, I, 0)
End If
Call SendInventory(index)

Call PlayerMsg(index, "Você vendeu esta casa para " & (Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index)).Data2 / 2) & "!", BRIGHTGREEN)
Call Packet_ClearOwner(index)
End If
End If
Next I
End Sub


Enquanto ainda no modHandleData Server, procurar;

Código:
Public Sub Packet_ClearOwner(index)

Substituir o código inteiro com isso;

Código:
Public Sub Packet_ClearOwner(ByVal index As Long)
Dim MapNum As Long

If GetPlayerAccess(index) < ADMIN_DEVELOPER Then
Call HackingAttempt(index, "Admin Cloning")
Exit Sub
End If

MapNum = GetPlayerMap(index)

Map(MapNum).Owner = 0
Map(MapNum).Name = "Abandoned House"
Map(MapNum).Revision = Map(MapNum).Revision + 1

Call SaveMap(MapNum)
Call MapCache_Create(MapNum)
Call SendDataToMap(MapNum, "CHECKFORMAP" & SEP_CHAR & MapNum & SEP_CHAR & (Map(MapNum).Revision + 1) & END_CHAR)

Call PlayerMsg(index, "O proprietário da casa foi limpa com êxito.", BRIGHTRED)
End Sub
[code=vb]

Now go into Server, clscommands and put this in;

[code=vb]
Sub SellHouse(index)
Call SendDataTo(index, "HOUSESELL" & END_CHAR)
End Sub

Agora abra a fonte de clientes e entrar em modHandleData, procure por "buyhouse" e ponha esta embaixo que casestring;

Código:
If casestring = "housesell" Then
i = MsgBox("Você gostaria de vender esta casa?", 4, "Vender Casa")
If i = 6 Then
Call SendData("sellhouse" & END_CHAR)
End If
Exit Sub
End If

Agora você pode chamar o sub sellhouse (índice) de comando de texto em sadscript. Abra seu main.txt e colocar isso na parte inferior do seu Sub Comandos (Acima End Select / End Sub)

Código:
Case "/Vender"
Call SellHouse(index)
Exit Sub

Agora o jogador pode ficar na casa de telha e do tipo comprar / vender e eles podem vender a casa para a metade do custo do que já pagou.

-------------------------------------------------- -------------
Agora, se você quer restringir jogadores de só comprar 1 casa de cada vez. Eu uso um GetVar / PutVar verificar no momento da compra / venda. Isso requer que remonta ao Packet_BuyHouse (índice) e Packet_SellHouse (índice) Caso você já tenha editado los.

Em Server / modHandleData, procurar;

Código:
Packet_BuyHouse(index)

Substituir o código inteiro com isso;

Código:
Public Sub Packet_BuyHouse(ByVal index As Long)
Dim I As Long
Dim MapNum As Long

MapNum = GetPlayerMap(index)

If Map(MapNum).Tile(GetPlayerX(index), GetPlayerY(index)).Type <> TILE_TYPE_HOUSE Then
Call PlayerMsg(index, "Você precisa estar em uma telha de casa para comprar!", BRIGHTRED)
Exit Sub
End If

If GetVar("scripts\Housing.ini", "OWNERS", "" & GetPlayerName(index) & "") = "1" Then
Call PlayerMsg(index, "Você já possui uma casa, você não pode comprar outra, até você vender o que você tem em primeiro lugar.", BRIGHTRED)
Exit Sub
End If

If Map(MapNum).Tile(GetPlayerX(index), GetPlayerY(index)).Data1 = 0 Then
Map(MapNum).Owner = GetPlayerName(index)
Map(MapNum).Name = GetPlayerName(index) & "'s House"
Map(MapNum).Revision = Map(MapNum).Revision + 1
Call SaveMap(MapNum)
Call PutVar("scripts\Housing.ini", "OWNERS", "" & GetPlayerName(index) & "", 1)
Call MapCache_Create(MapNum)
Call SendDataToMap(MapNum, "CHECKFORMAP" & SEP_CHAR & MapNum & SEP_CHAR & (Map(MapNum).Revision + 1) & END_CHAR)
Call PlayerMsg(index, "Você possui agora esta casa!", BRIGHTGREEN)

Exit Sub
End If

For I = 1 To MAX_INV
If GetPlayerInvItemNum(index, I) = Map(MapNum).Tile(GetPlayerX(index), GetPlayerY(index)).Data1 Then
If Item(GetPlayerInvItemNum(index, I)).Type = ITEM_TYPE_CURRENCY Then
If GetPlayerInvItemValue(index, I) >= Map(MapNum).Tile(GetPlayerX(index), GetPlayerY(index)).Data2 Then
Call SetPlayerInvItemValue(index, I, GetPlayerInvItemValue(index, I) - Map(MapNum).Tile(GetPlayerX(index), GetPlayerY(index)).Data2)

If GetPlayerInvItemValue(index, I) = 0 Then
Call SetPlayerInvItemNum(index, I, 0)
End If

Map(MapNum).Owner = GetPlayerName(index)
Map(MapNum).Name = GetPlayerName(index) & "'s House"
Map(MapNum).Revision = Map(GetPlayerMap(index)).Revision + 1
Call SaveMap(MapNum)
Call SendInventory(index)
Call PlayerMsg(index, "Você comprou uma casa nova!", BRIGHTGREEN)
Call PutVar("scripts\Housing.ini", "OWNERS", "" & GetPlayerName(index) & "", 1)
Call MapCache_Create(MapNum)
Call SendDataToMap(MapNum, "CHECKFORMAP" & SEP_CHAR & MapNum & SEP_CHAR & (Map(MapNum).Revision + 1) & END_CHAR)
End If
Else
If GetPlayerWeaponSlot(index) <> I And GetPlayerArmorSlot(index) <> I And GetPlayerShieldSlot(index) <> I And GetPlayerHelmetSlot(index) <> I And GetPlayerLegsSlot(index) <> I And GetPlayerRingSlot(index) <> I And GetPlayerNecklaceSlot(index) <> I Then
Call SetPlayerInvItemNum(index, I, 0)

Map(MapNum).Owner = GetPlayerName(index)
Map(MapNum).Name = GetPlayerName(index) & "'s House"
Map(MapNum).Revision = Map(MapNum).Revision + 1

Call SaveMap(MapNum)
Call SendInventory(index)
Call PlayerMsg(index, "Você possui agora uma nova casa!", BRIGHTGREEN)
Call PutVar("scripts\Housing.ini", "OWNERS", "" & GetPlayerName(index) & "", 1)
Call MapCache_Create(MapNum)
Call SendDataToMap(MapNum, "CHECKFORMAP" & SEP_CHAR & MapNum & SEP_CHAR & (Map(MapNum).Revision + 1) & END_CHAR)
End If
End If

If GetPlayerWeaponSlot(index) <> I And GetPlayerArmorSlot(index) <> I And GetPlayerShieldSlot(index) <> I And GetPlayerHelmetSlot(index) <> I And GetPlayerLegsSlot(index) <> I And GetPlayerRingSlot(index) <> I And GetPlayerNecklaceSlot(index) <> I Then
Exit Sub
End If
End If
Next I

Call PlayerMsg(index, "Você não tem o suficiente para comprar esta casa!", BRIGHTRED)
End Sub

Então olhe para Packet_SellHouse índice () se você tivesse colocado no de cima. Substituir, que com isso;

Código:
Public Sub Packet_SellHouse(ByVal index As Long)
Dim I As Long

If Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index)).Type <> TILE_TYPE_HOUSE Then
Call PlayerMsg(index, "Você precisa ser na telha de comprar casa para vendê-lo!", BRIGHTRED)
Exit Sub
End If

If Map(GetPlayerMap(index)).Owner <> GetPlayerName(index) Then
Call PlayerMsg(index, "Você não possui esta casa!", BRIGHTRED)
Exit Sub
End If

For I = 1 To MAX_INV
If GetPlayerInvItemNum(index, I) = Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index)).Data1 Then
If Item(GetPlayerInvItemNum(index, I)).Type = ITEM_TYPE_CURRENCY Then
Call SetPlayerInvItemValue(index, I, GetPlayerInvItemValue(index, I) + (Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index)).Data2 / 2))

If GetPlayerInvItemValue(index, I) = 0 Then
Call SetPlayerInvItemNum(index, I, 0)
End If
Call SendInventory(index)

Call PlayerMsg(index, "Você vendeu esta casa para" & (Map(GetPlayerMap(index)).Tile(GetPlayerX(index), GetPlayerY(index)).Data2 / 2) & "!", BRIGHTGREEN)
Call PutVar("scripts\Housing.ini", "OWNERS", "" & GetPlayerName(index) & "", "")
Call Packet_ClearOwner(index)
End If
End If
Next I
End Sub

Isso deve fazê-lo muito bem. Ah, quase esqueci, se você quiser dar aos jogadores pré-definida de habitação, então você tem que parar o pacote do modhandledata Server;

Código:
Case "requestedithouse"



Creditos WIlclefison

PS: ISSO E para deixar Com uma cara melhor para voce vender uma casa e compara ela de alguem
wilclefi
wilclefi
Membro
Membro

Mensagens : 114

http://fanyot.tk

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos