Allso, im momment geht es bei mir wieder, seit dem ich die .set gelöscht habe,
Und nochmal vielen dank für den Tipp
Beiträge von Scripter-oNE
-
-
Ich weiß nicht, ob andere es auch haben, das ist mein test server, wo ich bisher eig nur allein drauf Joine
ich versuche das mal, aber es ommt ja nur auf meinem server vor, und dann auch nur nach dem "Spawn" klicken!Ich melde mich gleich wieder, ich versuche das mal mit der .set
//edit: Mhh, Tatsache, es lag daran... aber warum dann nur auf meinem Server? Komische Sache, nungut, ich danke dir Vielmals!
-
Heyho Leute, ich habe nun gescriptet, das man an der lezten Position Spawnt, an der man sich ausgeloggt hat. Laufen tut das ganze via MySQL
Doch habe ich seidem ein Grafik Problem, der Ganze Bildschirm färbt sich erst nach dem Spawne Weiß-Gelblich und die CPU auslastung steigt ins unermessliche!
Dies ist erst wen ich mich in mein Server eingeloggt habe, und auf "spawnen" gelickt habe.
Auf anderen Server ist dies nicht der fallHier mal ein Bild, damit man sich mehr darunter vorstellen kann
Hier mal der Code
enum SpielerDaten
{
pName[MAX_PLAYER_NAME],
pLevel,
pGeld,
pKills,
pTode,
Float:pHealth,
pAdmin,
Float:xKord,
Float:yKord,
Float:zKord,
}stock Float:mysql_GetFloat(Table[], Field[], Where[], Is[])
{
new query[128], Float:sqlfloat;
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
mysql_real_escape_string(Is, Is);
format(query, 128, "SELECT %s FROM %s WHERE %s = '%s'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
mysql_fetch_float(sqlfloat);
mysql_free_result();
return sqlfloat;
}stock LoadPlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
//SpielerInfo[playerid][xxKord] = mysql_GetFloat("accounts", "xKord", "Name", SpielerInfo[playerid][pName]);
//SpielerInfo[playerid][yyKord] = mysql_GetFloat("accounts", "yKord", "Name", SpielerInfo[playerid][pName]);
//SpielerInfo[playerid][zzKord] = mysql_GetFloat("accounts", "zKord", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][xKord] = mysql_GetFloat("accounts", "xKord", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][yKord] = mysql_GetFloat("accounts", "yKord", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][zKord] = mysql_GetFloat("accounts", "zKord", "Name", SpielerInfo[playerid][pName]);
//SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
SetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
}
return 1;
}
stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
new Float:xxKord,Float:yyKord,Float:zzKord;
GetPlayerPos(playerid,xxKord,yyKord,zzKord);
mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
GetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
/* mysql_SetFloat("accounts", "xKord", SpielerInfo[playerid][xKord], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "yKord", SpielerInfo[playerid][yKord], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "zKord", SpielerInfo[playerid][zKord], "Name", SpielerInfo[playerid][pName]);*/
mysql_SetFloat("accounts","xKord",xxKord,"Name",SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts","yKord",yyKord,"Name",SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts","zKord",zzKord,"Name",SpielerInfo[playerid][pName]);
}
}
return 1;
}Ich hoffe ihr könnt mir bei dem problem helfen. MFG
-
logischerweise, musst du bei x y z deine coordinaten eintrtagen bei rotation, deine rotation, und das selbe bei den farben und respawn
-
//edit: nochmal ein Komplett Edit, damit jeder weis, wo man nun stehen geblieben ist,
allso es geht immernoich darum, das die letzte spieler Position nicht geladen wird, bzw man nicht dort gespawnt wird.stock LoadPlayer
stock LoadPlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{new Float:xxKord,Float:yyKord,Float:zzKord;
GetPlayerPos(playerid,xxKord,yyKord,zzKord);
GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][xxKord] = mysql_GetFloat("accounts", "xKord", "Name", SpielerInfo[playerid][pName]);//warning
SpielerInfo[playerid][yyKord] = mysql_GetFloat("accounts", "yKord", "Name", SpielerInfo[playerid][pName]);//warning
SpielerInfo[playerid][zzKord] = mysql_GetFloat("accounts", "zKord", "Name", SpielerInfo[playerid][pName]);//warning
SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
SetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
}
return 1;
}stock SavePlayer
stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
new Float:xxKord,Float:yyKord,Float:zzKord;
GetPlayerPos(playerid,xxKord,yyKord,zzKord);
mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
GetPlayerHealth(playerid,SpielerInfo[playerid][pHealth]);
mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
/* mysql_SetFloat("accounts", "xKord", SpielerInfo[playerid][xKord], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "yKord", SpielerInfo[playerid][yKord], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "zKord", SpielerInfo[playerid][zKord], "Name", SpielerInfo[playerid][pName]);*/
mysql_SetFloat("accounts","xKord",xxKord,"Name",SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts","yKord",yyKord,"Name",SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts","zKord",zzKord,"Name",SpielerInfo[playerid][pName]);
}
}
return 1;
}der/die/das WTF enum
enum SpielerDaten
{
pName[MAX_PLAYER_NAME],
pLevel,
pGeld,
pKills,
pTode,
Float:pHealth,
pAdmin,
Float:xKord,
Float:yKord,
Float:zKord
}Soo, allso ich werde nicht an der Letzten Position gespawnt, und ausserdem habe cih folgende Warnings.
G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1286) : warning 213: tag mismatch
G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1287) : warning 213: tag mismatch
G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(128 : warning 213: tag mismatch
G:\Scripting\Eigenes script\gamemodes\RLScript.pwn(1373) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase4 Warnings.
Wie gesagt, bin MySQL noob, und fände es sehr freundlich wen mir jemand unter die arme greift, und mir die fehler genau erklär!
//edit:
Ein Warning kommt noch von hier: aber erst seid dem ich das GetFloat bei LoadPlayer drinn habe
stock mysql_GetFloat(Table[], Field[], Where[], Is[])
{
new query[128],Float:sqlfloat;
mysql_real_escape_string(Table,Table);
mysql_real_escape_string(Field,Field);
mysql_real_escape_string(Where,Where);
mysql_real_escape_string(Is,Is);
format(query,128,"SELECT `%s` FROM `%s` WHERE `%s` = '%s'", Field, Table, Where, Is);
mysql_query(query);
mysql_store_result();
mysql_fetch_float(sqlfloat);
mysql_free_result();
return sqlfloat; //warning
} -
Was heißt SAMP Blacklist? Dürfen sie den server dann schließen?
-
Ja, aufjedenfall!, das is wirklich episch!
-
Zeige uns deinen Code und wir helfen dir
//edit: oder schaue dir dieses Tutorial an [ SCRIPTING ] [TUT]Tore mit nur einem Befehl [GF und non GF]
-
Mit everest, der im gerätemanager
-
SpawnPlayer(playerid);
Bei OnPlayerConnect
-
Zsss.... Rauskopieren.... GF.....
Kinders, lern Scripten oder lasst es einfach, Ein Server ohne aktiven scripter ist MÜLL, wird doch eh wieder nur ein 0815 Server!
-
ja, und? OCMD ist das wohl schnellste und übersichtlichste, aber gut, wie du willst
if (strcmp(cmd, "/veh", true)==0 )
{
new tmp[256];
new giveplayerid;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, 0xFFFFFFAA, "Benutze: /veh [model id]");
return 1;
}
giveplayerid = strval(tmp);
if(giveplayerid > 399 && giveplayerid < 612)
{
new Float:x,Float:y,Float:z,Float:a;
GetPlayerPos(playerid,x,y,z);
GetPlayerFacingAngle(playerid,a);
SetPlayerPos(playerid,x,y,z+4);
new vi = CreateVehicleEx(giveplayerid,x,y,z,a,-1,-1,3600000);
LinkVehicleToInterior(vi,GetPlayerInterior(playerid));
printf("***%s hat ein Auto createt",PlayerName(playerid));
kmstand[vi] = 0;
kaputtnach[vi] = 200;
kaputtnachdatei[vi] = 200;
autotuer[vi] = 1;
PutPlayerInVehicle(playerid,vi,0);
TogglePlayerControllable(playerid,1);
for(new i;i<MAX_CARS;i++)
{
if(autotuer[i]==0)
{
if(dienst[playerid]==1 && beruf[playerid]==4)
{
SetVehicleParamsForPlayer(i,playerid,0,0);
} else {
SetVehicleParamsForPlayer(i,playerid,0,1);
}
} else {
SetVehicleParamsForPlayer(i,playerid,0,0);
}
}
} else {
SendClientMessage(playerid,COLOR_RED,"DU NOOB! wegen dir wäre fast der Server abgestürzt! ^^");
}
return 1;
} -
ocmd:veh(playerid,params[])
{
if(SpielerInfo[playerid][pAdmin] == 3 ) //musst du deinem script anpassen
{
new modelid;
if(sscanf(params,"d",modelid))return SendClientMessage(playerid,0xFF0000,"Info: /create [model]");
if(modelid < 400 || modelid > 611)return SendClientMessage(playerid,0xFF0000,"Ungültige Model-ID!");
new Float:pos[3];
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
CreateVehicle(modelid,pos[0]+1,pos[1]+1,pos[2],0,0,0,-1);
}
return 1;
} -
errors?
-
if(!strcmp(playerid),"bot",true);
{
PutPlayerInVehicle(playerid,botauto,0);
}
return 1; -
Rein theoretisch schon. wobei sich da Textraws wohl besser eignen würden!
-
Ich denke mal, über den SAMP Object editor
-
Eigentlich schon, oder nicht?
SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]);
Oder erkäre es mir besser, ich fange grad erst mit MySQL an, und kenne mich damit noch "0" aus
MFG
-
WOW, un ob das geld wert gewesen wäre, schade das du solch ein Schönes Script, für noobige Copy und Paste User raus gibst!
-
Hallo Community,
ich habe da ein kleines Problem, Udzwar Speichert mein Script nun endlich die letzte Position des spielers, aber aber das leben noc nicht
Und spwanen tut er mich auch nicht auf der gespeicherten PositionWäre nett wen mir da nochmal jemand hilft
Das enum:
enum SpielerDaten
{
pName[MAX_PLAYER_NAME],
pLevel,
pGeld,
pKills,
pTode,
Float:pHealth,
pAdmin,
xKord,
yKord,
zKord
}
new SpielerInfo[MAX_PLAYERS][SpielerDaten];Das Speichern beim public OnPlayerDisconnect
SavePlayer(playerid);Der LoadPlayer und SavePlayer stock
stock LoadPlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
SetPlayerPos(playerid,SpielerInfo[playerid][xKord], SpielerInfo[playerid][yKord], SpielerInfo[playerid][zKord]); //Unter den anderen Sache
}
return 1;
}
stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
new Float:xxKord,Float:yyKord,Float:zzKord;
GetPlayerPos(playerid,xxKord,yyKord,zzKord);
mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Admin", SpielerInfo[playerid][pAdmin], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
/* mysql_SetFloat("accounts", "xKord", SpielerInfo[playerid][xKord], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "yKord", SpielerInfo[playerid][yKord], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "zKord", SpielerInfo[playerid][zKord], "Name", SpielerInfo[playerid][pName]);*/
mysql_SetFloat("accounts","xKord",xxKord,"Name",SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts","yKord",yyKord,"Name",SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts","zKord",zzKord,"Name",SpielerInfo[playerid][pName]);
}
}
return 1;
}//edit: Nun speichert er auch die Position, aber er gibt sie nicht wieder. und das Helth speichert er auch noch nicht