Primo
Новичок
Доброго времени суток уважаемые форумчане.
Столкнулся с необычной для меня проблемой.
При заходе на сервер игрок появляется на нулевых координатах по неизвестной мне причине.
Лично я в коде ничего касающегося этого не нашел, поэтому прошу помощи у вас.
Заранее благодарю за помощь.
Столкнулся с необычной для меня проблемой.
При заходе на сервер игрок появляется на нулевых координатах по неизвестной мне причине.
Лично я в коде ничего касающегося этого не нашел, поэтому прошу помощи у вас.
Код:
#include <a_samp>
#include <mxINI>
#include <md5>
#define COLOR_RED2 0xAA3333AA
#define COLOR_RED 0xAA3333AA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_SYSTEM 0xFF0000AA
//new Level[MAX_PLAYERS];
new KillingSpree[MAX_PLAYERS];
new MonsterKill[MAX_PLAYERS];
new GodLike[MAX_PLAYERS];
new Rampage[MAX_PLAYERS];
enum pInfo {
pMoney, // Ñîõðàíÿåò êîë-âî äåíåã.
Float:pHeal, // Ñîõðàíÿåò êîë-âî æèçíåé.
Level[MAX_PLAYERS],
Kill[MAX_PLAYERS],
Float:posx,
Float:posy,
Float:posz
};
new Player[MAX_PLAYERS][pInfo];
forward SaveAccounts();
forward LevelUpScan(playerid);
public LevelUpScan(playerid)
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(Player[i][Level]==1)
{
GivePlayerWeapon(i,6,99999);
}
if(Player[i][Level]==2)
{
GivePlayerWeapon(i,8,99999);
}
if(Player[i][Level]==3)
{
GivePlayerWeapon(i,9,99999);
}
if(Player[i][Level]==4)
{
GivePlayerWeapon(i,22,99999);
}
if(Player[i][Level]==5)
{
GivePlayerWeapon(i,24,99999);
}
if(Player[i][Level]==6)
{
GivePlayerWeapon(i,25,99999);
}
if(Player[i][Level]==7)
{
GivePlayerWeapon(i,26,99999);
}
if(Player[i][Level]==7)
{
GivePlayerWeapon(i,27,99999);
}
if(Player[i][Level]==8)
{
GivePlayerWeapon(i,28,99999);
}
if(Player[i][Level]==9)
{
GivePlayerWeapon(i,32,99999);
}
if(Player[i][Level]==10)
{
GivePlayerWeapon(i,29,99999);
}
if(Player[i][Level]==11)
{
GivePlayerWeapon(i,30,99999);
}
if(Player[i][Level]==12)
{
GivePlayerWeapon(i,33,99999);
}
if(Player[i][Level]==13)
{
GivePlayerWeapon(i,34,99999);
}
if(Player[i][Level]==14)
{
GivePlayerWeapon(i,18,99999);
}
if(Player[i][Level]==15)
{
GivePlayerWeapon(i,37,99999);
//Vehicle();
}
if(Player[i][Level]==16)
{
GivePlayerWeapon(i,35,99999);
}
if(Player[i][Level]==17)
{
GivePlayerWeapon(i,36,99999);
}
if(Player[i][Level]==18)
{
GivePlayerWeapon(i,38,99999);
}
if(Player[i][Level]==19)
{
GivePlayerWeapon(i,16,99999);
}
if(Player[i][Level]==20)
{
new pName[MAX_PLAYER_NAME];
GetPlayerName(i, pName, sizeof(pName));
new string[128];
format(string, sizeof(string),"Â ýòîì ðàóíäå ïîáåäèë '%s'! Ïðèìèòå íàøè ïîçäðàâëåíèÿ!", pName);
SendClientMessageToAll(COLOR_GREEN, string);
SetTimer("End", 1000*10, 0);
}
}
return 1;
}
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
public OnGameModeInit()
{
SendRconCommand("worldtime 23:00");
SetWorldTime(23);
AllowInteriorWeapons(1);
ShowNameTags(1);
ShowPlayerMarkers(1);
UsePlayerPedAnims();
DisableInteriorEnterExits();
SetGameModeText("VErtoe GunGame"); // - Èìÿ ãåéììîäà, ýòî òàê íà âñÿêèé ñëó÷àé
SendRconCommand("mapname gg_arenat"); // - MapName íàçâàíèå êàðòû
//SendRconCommand("weather 44"); // - ïîãîäà íà ñåðâåðå 44 - òåìíîå íåáî, 17 - ÿñíàÿ áåç îáëîêîâ
SetGameModeText("GunGame VErtoe");
SetTimer("LevelUpScan",600,1);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, Player[playerid][posx], Player[playerid][posy], Player[playerid][posz]);
return 1;
}
public OnPlayerConnect(playerid)
{
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //óçíàåì íèê èãðîêà
new account[128];
new string[64];
format(account,sizeof(account),"users/%s.ini",PlayerName); //ñîçäàåì àêê
format(string, sizeof(string), "*%s ïðèñîåäèíèëñÿ.", PlayerName);
SendClientMessageToAll(COLOR_GREEN, string);
if(!fexist(account)) //åñëè àêêà íå ñóùåñòâóåò, òî...
{
ShowPlayerDialog(playerid,1,DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", "Âû äîëæíû çàðåãèñòðèðîâàòüñÿ! \nÂâåäèòå âàø ïàðîëü:", "REGISTER", ""); //...Ïîêàçûâàåì èãðîêó äèàëîã ðåãè
}
else
{
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Àâòîðèçàöèÿ", "Âû äîëæíû àâòîðèçîâàòüñÿ! \nÂâåäèòå âàø ïàðîëü:", "LOGIN", ""); //åñëè îí åñòü, òî àâòîðèçóåì åãî
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new pName[MAX_PLAYER_NAME];
new string[256];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), "*%s ïîêèíóë èãðó.", pName);
SendClientMessageToAll(COLOR_GREEN, string);
SaveAccounts();
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerInterior(playerid,0);
SetPlayerPos(playerid, Player[playerid][posx], Player[playerid][posy], Player[playerid][posz]);
if(GetPVarInt(playerid, "Logged") != 1) return 0;
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(Player[i][Level]==0)
{
GivePlayerWeapon(i,2,99999);
}
}
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
SendDeathMessage(killerid, playerid, reason);
Player[killerid][Kill]++;
KillingSpree[killerid]++;
MonsterKill[killerid]++;
GodLike[killerid]++;
Rampage[killerid]++;
KillingSpree[playerid] = 0;
MonsterKill[playerid] = 0;
GodLike[playerid] = 0;
Rampage[playerid] = 0;
//Kill[playerid]--;
new string[256];
new pName[MAX_PLAYER_NAME];
GetPlayerName(killerid, pName, sizeof(pName));
if(Player[killerid][Kill] == 3)
{
Player[killerid][Level]++;
Player[killerid][Kill] = 0;
format(string, sizeof(string), "'%s' ïîâûñèë óðîâåíü. Åãî óðîâåíü %d", pName, Player[killerid][Level]);
SendClientMessageToAll(COLOR_RED,string);
}
if(KillingSpree[killerid] == 2)
{
format(string, sizeof(string), "Ñåðèÿ óáèéñòâ!!!...");
SendClientMessageToAll(COLOR_GREEN, string);
}
if(MonsterKill[killerid] == 4)
{
format(string, sizeof(string), "Ìîíñòð!!!...");
SendClientMessageToAll(COLOR_GREEN, string);
}
if(GodLike[killerid] == 7)
{
format(string, sizeof(string), "ÁÎÃÎÏÎÄÎÁÅÍ!!!...");
SendClientMessageToAll(COLOR_ORANGE, string);
}
if(Rampage[killerid] == 10)
{
format(string, sizeof(string), "...!!!Êðîâàâàÿ áàíÿ!!!...");
SendClientMessageToAll(COLOR_RED, string);
}
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/ll", cmdtext, true, 10) == 0)
{
Player[playerid][Level] = 15;
return 1;
}
return 0;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
//=========================== Ðåãèñòðöèÿ ===========================
if(dialogid == 1) //Ðåãèñòðàöèÿ
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", "Âû äîëæíû çàðåãèñòðèðîâàòüñÿ! \nÂâåäèòå âàø ïàðîëü:", "Îê", "");
if(response) //ïðîâåðêà íà êíîïêó "ÎÊ" è íà íàæàòèå Enter'à
{
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName)); //óçíàåì íèê
new account[128];
format(account,sizeof(account),"users/%s.ini",PlayerName);//èùåì àêê
if(fexist(account)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Àâòîðèçàöèÿ", "Âû äîëæíû àâòîðèçîâàòüñÿ! \nÂâåäèòå âàø ïàðîëü:", "LOGIN", ""); //åñëè àêê óæå ñóùåñòâóåò, òî ëîãèíèì èãðîêà
new iniFile = ini_createFile(account); //ñîçäàåì àêê
if(iniFile < 0) ini_openFile (account); //åñëè ôàéë ïóñòîé, òî...
{
ini_setString(iniFile,"Ïàðîëü",inputtext); //çàïèøåì ïàðîëü è çàêîäèðóåì åãî
ini_setInteger(iniFile, "Money", 0); // Çàïèøåì êîë-âî äåíåã â ôàéë.
ini_setFloat(iniFile, "Heal", 100.0); // Çàïèøåì êîë-âî æèçíåé â ôàéë.
ini_setInteger(iniFile, "Kill", 0);
ini_setInteger(iniFile, "Level", 0);
ini_closeFile(iniFile); //çàêðîåì ôàéë
SetPVarInt(playerid, "Logged", 0); //ñîçäàåì ïåðåìåííóþ àâòîðèçàöèè
ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Àâòîðèçàöèÿ", "Âû äîëæíû àâòîðèçîâàòüñÿ! \nÂâåäèòå âàø ïàðîëü:", "LOGIN", ""); //òåïåðü ïîñëå ðåãèñòðàöèè, ìû äàäèì èãðîêó çàëîãèíèòüñÿ
}
}
else //Ïðîâåðêà íà âòîðóþ êíîïêó, íî åå òî ìû íå óêàçàëè. Íî åñëè íàæàòü Esc, òî ìû íå ðåãàåìñÿ. Òàê ÷òî ìû ñòàâèì ïðîâåðêó íà íàæàòèå Esc'åéïà
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Ðåãèñòðàöèÿ", "Âû äîëæíû çàðåãèñòðèðîâàòüñÿ! \nÂâåäèòå âàø ïàðîëü:", "Îê", "");
}
}
if(dialogid == 2)
{
if(!strlen(inputtext)) return ShowPlayerDialog(playerid,2,DIALOG_STYLE_INPUT, "Àâòîðèçàöèÿ", "Âû äîëæíû àâòîðèçîâàòüñÿ! \nÂâåäèòå âàø ïàðîëü:", "LOGIN", ""); //åñëè èãðîê íå ââåäåò ïàðîëü, òî èãðîê ìîã îáîéòè ðåãó. Íî ñ ýòîé ïðîâåðêîé ýòî èñêëþ÷àåòñÿ
if(response) // ïðîâåðêà íà êíîïêó "ÎÊ" è Enter
{
new PlayerName[MAX_PLAYER_NAME], password[64];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
new account[128];
format(account,sizeof(account),"users/%s.ini",PlayerName);
if(IsPlayerNPC(playerid))return 1;
new iniFile = ini_openFile(account);
ini_getString(iniFile, "Ïàðîëü",password); // Óçíà¸ì ïàðîëü àêêàóíòà.
if(!strcmp(inputtext, password, true))
{
ini_getInteger(iniFile, "Money", Player[playerid][pMoney]); // Çàïèøåì êîë-âî äåíåã â ïåðåìåííóþ.
ini_getFloat(iniFile, "Heal", Player[playerid][pHeal]); // Çàïèøåì êîë-âî æèçíåé â ïåðåìåííóþ.
ini_getInteger(iniFile, "Kill", Player[playerid][Kill]);
ini_getInteger(iniFile, "Level", Player[playerid][Level]);
SetPlayerHealth(playerid, Player[playerid][pHeal]);
GivePlayerMoney(playerid, Player[playerid][pMoney]);
ini_getFloat(iniFile, "PosX", Player[playerid][posx]);
ini_getFloat(iniFile, "PosY", Player[playerid][posy]);
ini_getFloat(iniFile, "PosZ", Player[playerid][posz]);
ini_closeFile(iniFile);
OnPlayerSpawn(playerid);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_SYSTEM, "System: Íåâåðíûé ïàðîëü!");
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Àâòîðèçàöèÿ", "Âû äîëæíû àâòîðèçîâàòüñÿ! \nÂâåäèòå âàø ïàðîëü:", "Îê", "");
return 1;
}
}
else //Åñëè íàæàòü Esc, òî...
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Àâòîðèçàöèÿ", "Âû äîëæíû àâòîðèçîâàòüñÿ! \nÂâåäèòå âàø ïàðîëü:", "Îê", ""); // íå äàåì èãðîêó îáîéòè àâòîðèçàöèþ è ïîêàçûâàåì åìó ñíîâà îêíî àâòîðèçàöèè
}
}
return 0;
}
public SaveAccounts()
{
for(new f; f < GetMaxPlayers(); f++)
{
if(!IsPlayerConnected(f))continue;
SaveAccount(f);
}
}
stock SaveAccount(playerid)
{
new PlayerName[MAX_PLAYER_NAME], account[128];
GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
format(account,sizeof(account), "users/%s.ini", PlayerName);
new Float:health;
GetPlayerHealth(playerid, health);
new Float:x;
new Float:y;
new Float:z;
GetPlayerPos(playerid, x, y, z);
new iniFile = ini_openFile(account);
ini_setInteger(iniFile, "Money", GetPlayerMoney(playerid));
ini_setFloat(iniFile, "Heal", health);
ini_setInteger(iniFile, "Kill", Player[playerid][Kill]);
ini_setInteger(iniFile, "Level", Player[playerid][Level]);
ini_setFloat(iniFile, "PosX", x);
ini_setFloat(iniFile, "PosY", y);
ini_setFloat(iniFile, "PosZ", z);
ini_closeFile(iniFile);
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
