[HELP] Spawn don't work on Linux Server :( -
vannesenn - 09.06.2014
Hi guys,
I have a big problem. On my home(Windows) server, spawn system work nice, without problems. I bought SAMP Server and I connect on server normally, without problems, but when I typed my password, I got this - http://imgur.com/0X5Dnh5.jpg. Man have animation with bug(like you see) and man only flying up.
But, when I put code(TogglePlayerSpectating(playerid, false)
in my login dialog, I got this - http://imgur.com/7alhkb7.jpg, screen with big bug!
So, I don't Know where is a problem. It's in TogglePlayerSpectating or not? Spawn and login system work nice on home server, but why don't work on Linux? Thanks for help
Код:
if(dialogid == DIALOG_LOGIN)
{
if(response)
{
new ip[16];
new sifra = udb_hash(inputtext);
GetPlayerIp(playerid, ip, 16);
if(Korisnik[playerid][pSifra] == sifra) //PROVJERA DALI JE pSifra JEDNAKA UPISANOJ SIFRI
{
TogglePlayerSpectating(playerid, false);
SetCameraBehindPlayer(playerid);
SpawnPlayer(playerid);
strmid(Korisnik[playerid][pLast_IP], ip, 0, strlen(ip), 16); //POSTAVLJA IP
}
else //UKOLIKO NIJE
{
new name[24];
new dan, mjesec, godina;
new sat, minuta, sekunda;
new string[365];
GetPlayerName(playerid, name, 24);
getdate(godina, mjesec, dan);
gettime(sat, minuta, sekunda);
wrong_pass[playerid]++;
if(wrong_pass[playerid] == 3)
{
ShowPlayerDialog(playerid, DIALOG_LOGIN_QUE, DIALOG_STYLE_MSGBOX, "Prijava - Previљe pokuљaja", ""BIJELA"Previљe ste puta upisali krivu љifru!\n\nMolimo, odaberite opciju.","Vraćanje", "Izlaz");
format(string, 128, "[%d.%d.%d. - %d:%d:%d] Igrac %s[%s] je previse puta ukucao krivu sifru.", dan, mjesec, godina, sat, minuta, sekunda, name, ip);
WrongPassLog(string);
if(Korisnik[playerid][pRazina_Zastite] == 2)
{
format(string, 365, "Pozdrav %s,\ndanas(%d.%d.%d.) u %d:%d:%d sati je netko ukucao 3 puta pogreљnu љifru.\nUkoliko mislite da je to bio pokuљaj krađe vaљeg računa, obratite nam se na naљem Forumu("WEB").\nLijep pozdrav, Haswell RolePlay tim.", name, dan, mjesec, godina, sat, minuta, sekunda);
SendMail(Korisnik[playerid][pMail], "haswell.samp@hotmail.com", "Haswell RolePlay SA-MP", "Pokusaj ulaska u vas racun", string);
}
}
else
{
format(string, 365, ""BIJELA"___________________________________________________\n\nUpisali ste krivu lozinku, %s\n\n"ZUTA"Ukoliko ste zaboravili љifru, moћete je vratiti.\n\n"BIJELA"Forum: "SPLAVA""WEB"\n\n"BIJELA"Upiљite točnu loziknu.\n\n___________________________________________________",name);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Prijava", string, "Prijava", "Odustani");
}
}
}
else
{
Kick(playerid);
}
}
Код:
public OnPlayerSpawn(playerid)
{
new name[24];
new ip[16];
new string[186];
GetPlayerName(playerid, name, 24);
GetPlayerIp(playerid, ip, 16);
if(IsPlayerNPC(playerid)) //UKOLIKO JE PRIJAVLJENI IGRAC BOT
{
if(!strcmp(name, "Vozac_Tramvaja", true))
{
PutPlayerInVehicle(playerid, bot_vozilo, false);
SetPlayerColor(playerid, 0xFFFFFF00);
return 1;
}
}
else //UKOLIKO JE PRIJAVLJENI IGRAC COVJEK
{
if(spawn_ogranicenje[playerid] == true)
{
//POKAZUJE IGRACEN NOVAC
TextDrawShowForPlayer(playerid, NovacBoks);
TextDrawShowForPlayer(playerid, NovacTextDraw[playerid]);
//POSTAVLJA SKIN I SATI ONLINE
SetPlayerSkin(playerid, Korisnik[playerid][pSkin]);
SetPlayerScore(playerid, Korisnik[playerid][pSatiIgranja]);
//RESETIRANJE ANIMACIJE
ApplyAnimation(playerid, "DEALER", "null", 0.0, 0, 0, 0, 0, 0);
//SPAWNANJE IGRACA
SetPlayerSpawn(playerid, false);
//UKOLIKO SE IGRAC PRVI PUT SPAWNA
if(logiran[playerid] == false)
{
new zemlja[16], drzava[128], grad[128];
GetPlayerLocation(playerid, zemlja, drzava, grad, 2);
logiran[playerid] = true;
format(string, 128, "Dobro doљli na "SERVERNAME" "VRSTA", "SPLAVA"%s"BIJELA".", name);
SendClientMessage(playerid, BOJA_BIJELA, string);
AC_UpdateMoneyBar(playerid, Korisnik[playerid][pNovac]);
SetPlayerColor(playerid, 0xFFFFFF00);
//SALJE OBAVIJEST STAFFU DA JE IGRAC SPOJEN
if(Info[false][ConnectNotification] == 1) //SAMO ADMINI
{
format(string, 186, "*** %s[%s] se spojio na Server. Lokacija igrača je: %s - %s - %s", name, ip, zemlja, drzava, grad);
SendAdminMessage(BOJA_KICKWARNBAN, string);
}
if(Info[false][ConnectNotification] == 2) //ADMINI I GAME MASTERI
{
format(string, 128, "*** %s[%s] se spojio na Server.", name, ip);
SendStaffMessage(BOJA_KICKWARNBAN, string);
}
//UKOLIKO IGRAC NIJE PROSAO UVOD
/* if(Korisnik[playerid][pProsao_Uvod] == false)
{
ShowPlayerDialog(playerid, DIALOG_REGISTER_INTRO, DIALOG_STYLE_MSGBOX, "Uvod - Prvi trenuci na Serveru", ""TCRVENA"Nazalost, ovaj uvod je potrebno proci.\n\n"BIJELA"Poslje malog uvoda u nas svijet cete proci kroz kratki RolePlay tutorijal.\nPoslje tutorijala cete morati odgovoriti na par pitanja, zasto dobro pratite RolePlay tutorijal.", "Dalje", "Izlaz");
}*/
//UKOLIKO JE IGRAC VRATIO SVOJU SIFRU
if(Korisnik[playerid][pVracena_Sifra] == true)
{
SendClientMessage(playerid, BOJA_TCRVENA, "Uspjeљno ste vratili svoju љifru! Ukoliko budete imali kakvih problema, obratite nam se na "SPLAVA""WEB""TCRVENA".");
Korisnik[playerid][pVracena_Sifra] = false;
}
}
}
else
{
spawn_ogranicenje[playerid] = true;
}
}
return 1;
}
Код:
public OnPlayerRequestClass(playerid, classid)
{
if(!IsPlayerNPC(playerid))
{
if(!Logiran(playerid))
{
new name[24];
new ip[16];
new dan,mjesec,godina;
new sat,minuta,sekunda;
new string[365];
new ime;
GetPlayerName(playerid, name, 24);
GetPlayerIp(playerid, ip, 16);
getdate(godina,mjesec,dan);
gettime(sat,minuta,sekunda);
ime = strfind(name, "_", true);
//MICANJE SPECA ZA KLASU
TogglePlayerSpectating(playerid, true);
//POSTAVLJANJE KAMERE
Postavi_Kameru(playerid);
if(fexist(UserPath(name))) //PROVJERA DALI POSTOJI KORISNICKI RACUN
{
INI_ParseFile(UserPath(name), "UcitajKorisnika_%s", .bExtra = true, .extra = playerid); //UCITAVANJE KORISNIKA
if(ime == -1) //PROVJERA DALI JE IGRAC UPISAO ISPRAVNO IME
{
format(string, 128, "[%d.%d.%d. - %d:%d:%d] Korisnik %s[%s] se spojio s nepravilno unesenim imenom.", dan, mjesec, godina, sat, minuta, sekunda, name, ip);
WrongNameLog(string);
SendClientMessage(playerid, BOJA_TCRVENA, "Vaљe ime nije u pravilnom obliku. U vaљem imenu mora biti _!");
return SetTimerEx("Izbaci_Igraca", 1000, false, "i", playerid);
}
if(strfind(name, "0", true) != -1 || strfind(name, "1", true) != -1 || strfind(name, "2", true) != -1 || strfind(name, "3", true) != -1 || strfind(name, "4", true) != -1 ||
strfind(name, "5", true) != -1 || strfind(name, "6", true) != -1 || strfind(name, "7", true) != -1 || strfind(name, "8", true) != -1 || strfind(name, "9", true) != -1)
{
format(string, 128, "[%d.%d.%d. - %d:%d:%d] Korisnik %s[%s] se spojio s nepravilno unesenim imenom.", dan, mjesec, godina, sat, minuta, sekunda, name, ip);
WrongNameLog(string);
SendClientMessage(playerid, BOJA_TCRVENA, "Vaљe ime nije u pravilnom obliku. U vaљem imenu ne smiju biti brojevi!");
return SetTimerEx("Izbaci_Igraca", 1000, false, "i", playerid);
}
if(Info[false][BlackListCheck] == true) //UKOLIKO JE PROVJERA ZA BLACK LISTU UPALJENA
{
CheckPlayerInBlackList(playerid);
}
if(Info[false][Zakljucan] != 0) //UKOLIKO JE SERVER ZAKLJUCAN
{
return ShowPlayerDialog(playerid, DIALOG_SERVER_LOCKPASS, DIALOG_STYLE_INPUT, "Server - Љifra", ""NARANDJASTA"Server je zakljućan!\n\n"BIJELA"Upiљite љifru da biste uљli na Server", "Uđi", "Odustani");
}
if(Korisnik[playerid][pRegistriran] == 2 && Korisnik[playerid][pSatiIgranja] > 10) //UKOLIKO NIJE AKTIVIRAN RACUN
{
new kod = 100000000 + random(8999999999);
format(string, 512, "Pozdrav %s,\nDrago nam je da ste odabrali baљ naљ Server za igranje. Na dnu e-Maila će te vidjeti kod koji trebate upisati In Game. Također će te morati proći par osnovnih Role Play pitanja.\n\nVaљ kod je: %d.\nUkoliko budete imali kakva pitanja, obratite nam se na naљem Forumu("WEB").\nLijep pozdrav i ugodan borakav na naљem Serveru, Haswell RolePlay tim.", name, kod);
SendMail(Korisnik[playerid][pMail], "haswell.samp@hotmail.com", "Haswell RolePlay SA-MP", "Dobro doљli na Server!", string);
Korisnik[playerid][pRegistracijski_Kod] = kod;
return ShowPlayerDialog(playerid, DIALOG_REGISTER_VERF_CODE, DIALOG_STYLE_INPUT, "Provjera računa", ""BIJELA"Na Vaљ e-Mail koji ste ukucali tokom registracije je poslan kod kojeg trebate ovdje ukucati radi potvrde računa.\nDa biste mogli nastavit igrati, morate upisati kod koji ste primili na Vaљu e-Mail adresu.", "Potvrdi", "Odustani");
}
if(Korisnik[playerid][pRegistriran] == 3)
{
return ShowPlayerDialog(playerid, DIALOG_LOGIN_VERF_NEW_MAIL, DIALOG_STYLE_INPUT, "Provjera e-Mail adrese", ""BIJELA"Da biste pristupili računu morate ukucati kod koji ste primili na Vaљ novi e-Mail.", "Potvrdi", "Odustani");
}
//PROVJERA DALI JE TRENUTNI IP ISTI KAO OD PROSLOG LOGINA
if(strcmp(ip, Korisnik[playerid][pLast_IP], true) && Korisnik[playerid][pRazina_Zastite] == 2)
{
format(string, 256, "Pozdrav %s,\ndanas(%d.%d.%d.) u %d:%d:%d sati je netko pokusao ući u Vas račun.\nUkoliko mislite da Vam netko ћeli ukrasti račun, obratite nam se na naљem Forumu("WEB").\nLijep pozdrav, Haswell RolePlay tim.", name, dan, mjesec, godina, sat, minuta, sekunda);
SendMail(Korisnik[playerid][pMail], "haswell.samp@hotmail.com", "Haswell RolePlay SA-MP", "Pokuљaj ulaska u Vaљ račun", string);
}
if(Korisnik[playerid][pRegistriran] == 1) //UKOLIKO JE REGISTRIRAN DO KRAJA
{
new inst_kod[25];
gpci(playerid, inst_kod, 25);
if(Korisnik[playerid][pBan] == true)
{
SendClientMessage(playerid, BOJA_KICKWARNBAN, "** Naћalost, Vi ste Banani na ovom Serveru, za viљe informacija posjetite "SPLAVA""WEB".");
return SetTimerEx("Izbaci_Igraca", 1000, false, "i", playerid);
}
if(strcmp(inst_kod, Korisnik[playerid][pGPCI], true) && Korisnik[playerid][pRazina_Zastite] == 2) //USKORO DODAJ PROVJERU I ZA PREMIUM RACUN
{
new kod = 100000000 + random(8999999999);
gpci(playerid, inst_kod, 25);
Korisnik[playerid][pGPCI_Kod] = kod;
format(string, 186, "Pozdrav %s,\nDa biste se uspjeљno prijavili na svoj račun s drugog računala, InGame upiљite sljedeći kod: %d\nLijep pozdrav, Haswell RolePlay tim.", name, kod);
SendMail(Korisnik[playerid][pMail], "haswell.samp@hotmail.com", "Haswell RolePlay SA-MP", "Prijava na racun", string);
SpremiKorisnika(playerid);
return ShowPlayerDialog(playerid, DIALOG_LOGIN_GPCI_CODE_CHECK, DIALOG_STYLE_INPUT, "Prijava - Provjera uređaja", ""BIJELA"Na Vaљ e-Mail je poslan kod koji morate unjeti u polje ispod\nda biste se uspjeљno prijavili na Vaљ račun s drugog računala.", "Prijava", "Izlaz");
}
format(string, 365, ""BIJELA"___________________________________________________\n\nDobro doљli nazad na Server, %s\n\n"SZELENA"Vaљ korisnički račun je registriran.\n\n"BIJELA"Forum: "SPLAVA""WEB"\n\n"BIJELA"Upiљite vaљu loziknu.\n\n___________________________________________________",name);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Prijava", string, "Prijava", "Odustani");
}
else //UKOLIKO NIJE
{
if(Info[false][Registracija] == false)
{
SendClientMessage(playerid, BOJA_SCRVENA, "Registracija je trenutno ugaљena, za viљe informacija posjetite "SPLAVA""WEB""SCRVENA".");
return SetTimerEx("Izbaci_Igraca", 1000, false, "i", playerid);
}
format(string, 365, ""BIJELA"___________________________________________________\n\nDobro doљli na Server, %s\n\n"NARANDJASTA"Vaљ korisnički račun nije do kraja registriran.\n\n"BIJELA"Forum: "SPLAVA""WEB"\n\n"BIJELA"Upiљite vaљu ћeljenu loziknu.\n\n___________________________________________________",name);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registracija - 1. korak", string, "Dalje", "Odustani");
}
}
else //UKOLIKO NE POSTOJI KORISNICKI RACUN
{
if(Info[false][Registracija] == false)
{
SendClientMessage(playerid, BOJA_SCRVENA, "Registracija je trenutno ugaљena, za viљe informacija posjetite "SPLAVA""WEB""SCRVENA".");
return SetTimerEx("Izbaci_Igraca", 1000, false, "i", playerid);
}
format(string, 365, ""BIJELA"___________________________________________________\n\nDobro doљli na Server, %s\n\n"SCRVENA"Vaљ korisnički račun nije registriran.\n\n"BIJELA"Forum: "SPLAVA""WEB"\n\n"BIJELA"Upiљite vaљu ћeljenu loziknu.\n\n___________________________________________________",name);
ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Registracija - 1. korak", string, "Dalje", "Odustani");
}
}
else
{
SendClientMessage(playerid, BOJA_TCRVENA, "*** Ako ћelite promjeniti Skin, posjetite najbliћi dućan sa stvarima!");
}
}
return 1;
}
Код:
public SetPlayerSpawn(playerid, bool:stil)
{
if(stil == false) //UKOLIKO JE NORMALNO IZASO IZ IGRE I NEMA KUCU/RENT
{
TogglePlayerControllable(playerid, false);
for(new spawn_id = false; spawn_id < sizeof(Spawn); spawn_id++)
{
printf("Loopano %d puta", spawn_id);
if(Spawn[spawn_id][sEnble] == false)
{
new enble = random(4);
if(enble == 0 || enble == 2 /*OVO NADALJE KASNIJE OBRISI*/|| enble == 1 || enble == 3) //UKOLIKO JE SERVER ODLUCIO DA CE SPAWNATI IGRACA
{
Spawn[spawn_id][sEnble] = true;
SetPlayerPos(playerid, Spawn[spawn_id][sPosX], Spawn[spawn_id][sPosY], Spawn[spawn_id][sPosZ]);
SetPlayerFacingAngle(playerid, Spawn[spawn_id][sPosRX]);
SetPlayerInterior(playerid, Spawn[spawn_id][sInt]);
SetPlayerVirtualWorld(playerid, Spawn[spawn_id][sVirtualWorld]);
SetTimerEx("Spawn_Action", 3000, false, "id", playerid, spawn_id);
SetTimerEx("Spawn_Animation", 50, false, "id", playerid, spawn_id);
SetPlayerCameraPos(playerid, Spawn[spawn_id][sCamPos1X], Spawn[spawn_id][sCamPos1Y], Spawn[spawn_id][sCamPos1Z]);
SetPlayerCameraLookAt(playerid, Spawn[spawn_id][sCamLAPos1X], Spawn[spawn_id][sCamLAPos1Y], Spawn[spawn_id][sCamLAPos1Z]);
return 1;
}
}
}
return 1;
}
return 1;
}
public Spawn_Animation(playerid, spawn_id)
{
return ApplyAnimation(playerid, Spawn[spawn_id][sAnimLib], Spawn[spawn_id][sAnimName], 4.1, Spawn[spawn_id][sAnimLoop], Spawn[spawn_id][sAnimLockX], Spawn[spawn_id][sAnimLockY], Spawn[spawn_id][sAnimFreeze], Spawn[spawn_id][sAnimTimer], Spawn[spawn_id][sAnimSync]);
}
public Spawn_Action(playerid, spawn_id)
{
printf("Spawn %d", spawn_id);
Spawn[spawn_id][sEnble] = true;
if(Spawn[spawn_id][sCamMove] == true) // UKOLIKO JE POSTAVLJENO DA SE KAMERA MICE
{
InterpolateCameraPos(playerid, Spawn[spawn_id][sCamPos1X], Spawn[spawn_id][sCamPos1Y], Spawn[spawn_id][sCamPos1Z], Spawn[spawn_id][sCamPos2X], Spawn[spawn_id][sCamPos2Y], Spawn[spawn_id][sCamPos2Z], Spawn[spawn_id][sCamTimer], CAMERA_MOVE);
InterpolateCameraLookAt(playerid, Spawn[spawn_id][sCamLAPos1X], Spawn[spawn_id][sCamLAPos1Y], Spawn[spawn_id][sCamLAPos1Z], Spawn[spawn_id][sPosX], Spawn[spawn_id][sPosY], Spawn[spawn_id][sPosZ] + 0.60, Spawn[spawn_id][sCamTimer] - 625, CAMERA_MOVE);
}
return SetTimerEx("Vracanje_Kamere", Spawn[spawn_id][sAnimTrajanje], false, "id", playerid, spawn_id);
}
I using fixes2 include and Linux plugin(on Windows I using plugin for Windows OS). Maybe is problem in fixes2 version for Linux OS? Or maybe is problem in geo_ip include with database. I put database file in scriptfiles folder, did I made properly with database file?
Re: [HELP] Spawn don't work on Linux Server :( -
Konstantinos - 09.06.2014
In the first picture, it's like that because you need the spectating mode off (like you did after).
For the boundries, you should have atleast a class (in OnGameModeInit -> AddPlayerClass).
Before you spawn the player (in login dialog), use SetSpawnInfo before.
pawn Код:
TogglePlayerSpectating(playerid, false);
SetSpawnInfo(...); // add the arguments..
SpawnPlayer(playerid);
Re: [HELP] Spawn don't work on Linux Server :( -
vannesenn - 09.06.2014
Yeah, but I have random spawns, what now? :O
And why spawn work on home server without problems and setspawninfo?
Re: [HELP] Spawn don't work on Linux Server :( -
vannesenn - 10.06.2014
Sorry for DP, but I have same problem with /goto cmd. Problem is like on image #2
Код:
CMD:goto(playerid, params[])
{
if(Logiran(playerid))
{
if(Korisnik[playerid][pAdmin] != 0 || Korisnik[playerid][pGameMaster] != 0)
{
if(Korisnik[playerid][pStaffStatus] == true)
{
if(staffduty[playerid] == true)
{
new id;
if(sscanf(params, "u", id))
{
return SendClientMessage(playerid, BOJA_BIJELA, ""KORISTENJE": /goto [ID/DioImena]");
}
if(IsPlayerConnected(id))
{
new Float:idx,Float:idy,Float:idz;
new Float:px,Float:py,Float:pz;
new name[24];
new playername[24];
new ip[16];
new playerip[16];
new pInt = GetPlayerInterior(playerid);
new idInt = GetPlayerInterior(id);
new dan,mjesec,godina;
new sat,minuta,sekunda;
new string[128];
GetPlayerPos(id, idx, idy, idz);
GetPlayerPos(playerid, px, py, pz);
GetPlayerName(playerid, name, 24);
GetPlayerName(id, playername, 24);
GetPlayerIp(playerid, ip, 16);
GetPlayerIp(id, playerip, 16);
getdate(godina, mjesec, dan);
gettime(sat, minuta, sekunda);
pGotoX[playerid] = px;
pGotoY[playerid] = py;
pGotoZ[playerid] = pz;
pGotoInt[playerid] = pInt;
SetPlayerPos(playerid, idx, idy, idz+2.0);
SetPlayerInterior(playerid, idInt);
format(string, 128, "[%d.%d.%d. - %d:%d:%d] Admin/GM %s[%s] se portao do igraca %s[%s]", dan, mjesec, godina, sat, minuta, sekunda, name, ip, playername, playerip);
GotoLog(string);
}
else
{
SendClientMessage(playerid, BOJA_BIJELA, "("GRESKA") Taj igrač nije na Serveru.");
}
}
else
{
SendClientMessage(playerid, BOJA_BIJELA, "("GRESKA") Niste na Staff duћnosti.");
}
}
else
{
SendClientMessage(playerid, BOJA_BIJELA, "("GRESKA") Niste prijavljeni u Staff Panel.");
}
}
else
{
SendClientMessage(playerid, BOJA_BIJELA, "("GRESKA") Niste ovlaљteni za koriљtenje ove komande.");
}
}
return 1;
}
Maybe is problem because i ported to my NPC(NPC driving a train)?
Re: [HELP] Spawn don't work on Linux Server :( -
Beckett - 10.06.2014
You MUST have an AddPlayerClass on OnGameModeInIt otherwise it'll show you stay with the world boundries, if you have random spawns then just.
pawn Код:
AddPlayerClass(0,0......etc)
Re: [HELP] Spawn don't work on Linux Server :( -
vannesenn - 10.06.2014
I made, now maybe I have problems with goto cmd. I ported to my NPC, and I saw world boundries, but when I port to my(myself), I don't have a problem... :/
@EDIT: I have problem with join in the game. When I make GMX from cPanel, I can join the server. But, after 10 min I can't
Re: [HELP] Spawn don't work on Linux Server :( -
vannesenn - 10.06.2014
Sorry for DP, I need help fast