Bom, galera
Tava aqui sem nd para fazer, dai decidi ajudar aqui a comunidade do SAMP
Vou ensinar, neste tutorial, a criar um sistema de salvamento e de PlayerInfo....
E' aquele mesmo que tem la no The GodFather e em outros GM's...
Pode parecer mt complicado, mas na verdade e' bem simples:
Vamos la entao
Primeiramente, vai pensar no que no's queremos salvar. Neste tudo vai ser o seguinte:
:: AdminLevel -> pAdmin
:: Organizaçao -> pOrg
:: Lider -> pLider
:: Dinheiro -> pDinheiro
:: Skin -> pSkin
:: Nome -> pNome
:: Posicao de Spawn -> pCord X
-> pCord Y
-> pCord Z
Depois, vamos la no pawno, e no topo do GM, colocamos:
Agora na public OnPlayerConnect:
temos que ver se o ficheiro existe, e caso nao exista, tem que ser criado um...:
Agora em OnPlayerDisconect, para salvar tudo que o player fez e conquistou quando ele sair do servidor:
agora na public OnPlayerSpawn:
e e' isso, galera
dps e' so vcs estudar, compreender e desenvolver isso ai
Espero ter ajudado
Vou ensinar, neste tutorial, a criar um sistema de salvamento e de PlayerInfo....
E' aquele mesmo que tem la no The GodFather e em outros GM's...
Pode parecer mt complicado, mas na verdade e' bem simples:
Vamos la entao
Primeiramente, vai pensar no que no's queremos salvar. Neste tudo vai ser o seguinte:
:: AdminLevel -> pAdmin
:: Organizaçao -> pOrg
:: Lider -> pLider
:: Dinheiro -> pDinheiro
:: Skin -> pSkin
:: Nome -> pNome
:: Posicao de Spawn -> pCord X
-> pCord Y
-> pCord Z
Depois, vamos la no pawno, e no topo do GM, colocamos:
pawn Code:
enum pInfo { pAdmin, pOrg, pLider, pDinheiro, pSkin, pNome[MAX_PLAYER_NAME], Float: pX, Float: pY, Float: pZ, } new PlayerInfo[MAX_PLAYERS][pInfo];
Agora na public OnPlayerConnect:
temos que ver se o ficheiro existe, e caso nao exista, tem que ser criado um...:
pawn Code:
new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); //pega o nome do player new file[256]; new string[256]; format(file, sizeof(file), "%s.ini", pname); //pena no nome e "converte" em nome de ficheiro if(dini_Exists(file)) // verifica se o ficheiro existe { SendClientMessage(playerid, 0xFFC800FF, "Você está Registado"); //envia a informacao que esta' registrado format(string, sizeof(string), "Bem-Vindo de Volta %s", pname); SendClientMessage(playerid, 0xAF0000FF, string);//envia mensagem de boas vindas PlayerInfo[playerid][pAdmin] = dini_Int(file, "pAdmin"); PlayerInfo[playerid][pOrg] = dini_Int(file, "pOrg"); PlayerInfo[playerid][pLider] = dini_Int(file, "pLider"); PlayerInfo[playerid][pDinheiro] = dini_Int(file, "pDinheiro"); PlayerInfo[playerid][pSkin] = dini_Int(file, "pSkin"); PlayerInfo[playerid][pNome] = dini_Int(file, "pNome"); PlayerInfo[playerid][pX] = dini_Int(file, "pX"); PlayerInfo[playerid][pY] = dini_Int(file, "pY"); PlayerInfo[playerid][pZ] = dini_Int(file, "pZ"); } else //se o player nao está registado { dini_Create(file);//Cria Ficheiro dini_IntSet(file, "pAdmin", 0); //Admin Nivel 0 dini_IntSet(file, "pOrg", 0); //Sem ORG dini_IntSet(file, "pLider", 0);//Nao e' lider dini_IntSet(file, "pDinheiro", 1000); //coloca 1000$ de dinheiro dini_IntSet(file, "pSkin", 299); //Seleciona e salva com a skin 299 dini_Set(file, "pNome", "Cristiano Ronaldo"); //Salva Nome como "Cristiano Ronaldo" dini_FloatSet(file, "pX", -1964.5994); //Cord x dini_FloatSet(file, "pY", 541.0098);// Cord Y dini_FloatSet(file, "pZ", 35.1719); // Cord Z SendClientMessage(playerid, 0x0069FFFF, "Conta em seu nome Criada"); OnPlayerConnect(playerid);//Chama a public novamente }
Agora em OnPlayerDisconect, para salvar tudo que o player fez e conquistou quando ele sair do servidor:
pawn Code:
new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname));//pega o nome do player new file[256]; format(file, sizeof(file), "%s.ini", pname);//transforma o nome e ficheiro new Float: X, Float: Y, Float: Z; GetPlayerPos(playerid, X, Y, Z);//pega a posicao do player dini_IntSet(file, "pAdmin", PlayerInfo[playerid][pAdmin]);//salca o Admin Nivel dini_IntSet(file, "pOrg", PlayerInfo[playerid][pOrg]); //salva a org do player dini_IntSet(file, "pLider", PlayerInfo[playerid][pLider]); //salva se e lider e qual dini_IntSet(file, "pDinheiro", GetPlayerMoney(playerid)); // salva o dinheiro que o player tem dini_IntSet(file, "pSkin", GetPlayerSkin(playerid) ); //salva a skin que o player esta a usar dini_Set( file, "pNome", PlayerInfo[playerid][pLevel]); //salva a nota "Nome" (neste caso: "Cristiano Ronaldo") dini_FloatSet(file, "pX", X);//cordenada X dini_FloatSet(file, "pY", Y);//Cordenada Y dini_FloatSet(file, "pZ", Z);//Cordenada Z return 1; }
agora na public OnPlayerSpawn:
pawn Code:
ResetPlayerMoney(playerid);//reseta o dinheiro do player GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);//da o dinheiro ao player SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);//Seta a Skin do player SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
e e' isso, galera
dps e' so vcs estudar, compreender e desenvolver isso ai
Espero ter ajudado
5 comentários:
erro nos dini.
error 017: undefined symbol "dini_Exists"
E:\GM\gamemodes\GM.pwn(131) : error 017: undefined symbol "dini_Int"
E:\GM\gamemodes\GM.pwn(132) : error 017: undefined symbol "dini_Int"
E:\GM\gamemodes\GM.pwn(133) : error 017: undefined symbol "dini_Int"
E:\GM\gamemodes\GM.pwn(134) : error 017: undefined symbol "dini_Int"
E:\GM\gamemodes\GM.pwn(135) : error 017: undefined symbol "dini_Int"
E:\GM\gamemodes\GM.pwn(136) : error 017: undefined symbol "dini_Int"
E:\GM\gamemodes\GM.pwn(137) : error 017: undefined symbol "dini_Int"
E:\GM\gamemodes\GM.pwn(138) : error 017: undefined symbol "dini_Int"
E:\GM\gamemodes\GM.pwn(139) : error 017: undefined symbol "dini_Int"
E:\GM\gamemodes\GM.pwn(143) : error 017: undefined symbol "dini_Create"
E:\GM\gamemodes\GM.pwn(144) : error 017: undefined symbol "dini_IntSet"
E:\GM\gamemodes\GM.pwn(145) : error 017: undefined symbol "dini_IntSet"
E:\GM\gamemodes\GM.pwn(146) : error 017: undefined symbol "dini_IntSet"
E:\GM\gamemodes\GM.pwn(147) : error 017: undefined symbol "dini_IntSet"
E:\GM\gamemodes\GM.pwn(148) : error 017: undefined symbol "dini_IntSet"
E:\GM\gamemodes\GM.pwn(149) : error 017: undefined symbol "dini_Set"
E:\GM\gamemodes\GM.pwn(150) : error 017: undefined symbol "dini_FloatSet"
E:\GM\gamemodes\GM.pwn(151) : error 017: undefined symbol "dini_FloatSet"
E:\GM\gamemodes\GM.pwn(152) : error 017: undefined symbol "dini_FloatSet"
E:\GM\gamemodes\GM.pwn(172) : error 017: undefined symbol "dini_IntSet"
E:\GM\gamemodes\GM.pwn(173) : error 017: undefined symbol "dini_IntSet"
E:\GM\gamemodes\GM.pwn(174) : error 017: undefined symbol "dini_IntSet"
E:\GM\gamemodes\GM.pwn(175) : error 017: undefined symbol "dini_IntSet"
E:\GM\gamemodes\GM.pwn(176) : error 017: undefined symbol "dini_IntSet"
E:\GM\gamemodes\GM.pwn(177) : error 017: undefined symbol "dini_Set"
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
26 Errors.
problema com o file :/
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1051) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1052) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1054) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1060) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1068) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1069) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1088) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1094) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1095) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1097) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1100) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1108) : error 017: undefined symbol "pLevel"
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1112) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1118) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1119) : warning 217: loose indentation
C:\Users\banan\OneDrive\Documentos\BCRP-M.F.R\ELRP\gamemodes\WBRP.pwn(1121) : warning 217: loose indentation
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Error.
Alinhamento e estar usando uma variável que não existe no caso do "pLevel"
E pq VC precisa da include dine
Postar um comentário