Mach es einfach mal bei der Aktualisierung,
einmal TextDrawHideForPlayer(playerid,TEXTDRAWNAME);
und dann:
TextDrawShowForPlayer(playerid,TEXTDRAWNAME);
Kein Erfolg
Mach es einfach mal bei der Aktualisierung,
einmal TextDrawHideForPlayer(playerid,TEXTDRAWNAME);
und dann:
TextDrawShowForPlayer(playerid,TEXTDRAWNAME);
Kein Erfolg
TextDrawShowForPlayer(playerid,TEXTDRAWNAME);
Benutz das mal
Habe ich unter OnPlayerSpawn :s
Was ist hier falsch? wollte eine Statsbox scripten aber er zeigt ingame keinen Namen etc an, steht auch keine Zahl nichts.
forward statstextdraw ();
public statstextdraw ()
{
new str[30],i;
for(;i < MAX_PLAYERS; ++i)
{
format(str,30,"Name: %s",SpielerName(i));
format(str,30,"Level: %d",SpielerInfo[i][pLevel]);
format(str,30,"Kills: %d",SpielerInfo[i][pKills]);
format(str,30,"Tode: %d",SpielerInfo[i][pDeaths]);
format(str,30,"K/D: %d",SpielerInfo[i][pKills]/SpielerInfo[i][pDeaths]);
format(str,30,"Verwarnungen: %d/5",SpielerInfo[i][pWarn]);
PlayerTextDrawSetString(i,statsname[i],str);
PlayerTextDrawSetString(i,statslevel[i],str);
PlayerTextDrawSetString(i,statskills[i],str);
PlayerTextDrawSetString(i,statstode[i],str);
PlayerTextDrawSetString(i,statskd[i],str);
PlayerTextDrawSetString(i,statswarn[i],str);
}
return 1;
}
Was ist hier falsch? wollte eine Statsbox scripten aber er zeigt ingame keinen Namen etc an, steht auch keine Zahl nichts.
forward statstextdraw ();
public statstextdraw ()
{
new str[30],i;
for(;i < MAX_PLAYERS; ++i)
{
format(str,30,"Name: %s",SpielerName(i));
format(str,30,"Level: %d",SpielerInfo[i][pLevel]);
format(str,30,"Kills: %d",SpielerInfo[i][pKills]);
format(str,30,"Tode: %d",SpielerInfo[i][pDeaths]);
format(str,30,"K/D: %d",SpielerInfo[i][pKills]/SpielerInfo[i][pDeaths]);
format(str,30,"Verwarnungen: %d/5",SpielerInfo[i][pWarn]);
PlayerTextDrawSetString(i,statsname[i],str);
PlayerTextDrawSetString(i,statslevel[i],str);
PlayerTextDrawSetString(i,statskills[i],str);
PlayerTextDrawSetString(i,statstode[i],str);
PlayerTextDrawSetString(i,statskd[i],str);
PlayerTextDrawSetString(i,statswarn[i],str);
}
return 1;
}
Hey Community,
Ich habe heute mal ein wenig mit Textdraws gearbeitet und dies kam dann raus.
Habt ihr vielleicht paar Vorschläge was ich an den Textdraws ändern kann?
http://www.imagebanana.com/view/ibxnlkai/samp315.png
mfg
Hey Leute,
Wie macht man bei einem Textdraw so einen Strich wie auf dem Bild:
http://www.imagebanana.com/view/ob35gbu9/samp314.png
mfg
Jo jungs,
hat jemand paar Minuten Zeit um was zu testen?
Wenn ja die IP 5.9.28.77:7044
Wie heißt die Animation wo man auf den Boden fällt dann wieder aufsteht ? für Cbug
danke
Alles anzeigenJe nach dem, für wen soll die Runde denn vorbei sein?
Für killerid oder playerid?
Und sonst einfach ne Abfrage unter OnPlayerDeath machen mit welcher Waffe gekillt wurde...
if(GetPlayerWeapon(killerid) == 4){
//GunGame beenden..
}
Wenn nicht für killerid sondern für playerid die Runde beendet werden soll, einfach anstatt "killerid", "playerid" einsetzen bei der if Abfrage
Ich sehe gerade das Du abfragst ob killerid == 1 ist...
killerid == 1
Macht wenig Sinn da killerid das gleiche wie playerid ist..
Also würde das was DU da stehen hast nur funktionieren wenn die killerid ID 1 hat...
Greetz
#else
Halt alle in der Arena rausfliegen keine ahnung wie das gehen soll? villt eine Schleife? :s
Alles anzeigenKlar kann man unter OnPlayerDeath Waffen vergeben, macht aber nur Sinn, wenn man die Waffen nicht dem gestorbenen Spieler gibt, sondern z.b dem Killer (killerid)...
B2T:
Du switcht unter OnPlayerDeath den Killstreak von der Killerid, gibts aber Waffen an die PlayerID.. Ist recht komisch, oder?
//OnPlayerDeath
//gungame
gunstreak[killerid] +=1;
gunstreak[playerid] --;
switch(gunstreak[killerid])
{
case 1:
{
GivePlayerWeapon(killerid,32,1337);
gunstreak[killerid] = 1;
}
case 2:
{
GivePlayerWeapon(killerid,29,1337);
gunstreak[killerid] = 2;
}
case 3:
{
GivePlayerWeapon(killerid,25,1337);
gunstreak[killerid] = 3;
}
case 4:
{
GivePlayerWeapon(killerid,4,1);
gunstreak[killerid] = 4;
}
Danke Würde das so klappen das man wenn ein Spieler jemanden dann mit dem Messer killt, die Runde vorbei ist?
ich habe es so würde es so gehen
case 5:
{
if(dm[5][playerid] == 1 || killerid == 1)
{
SpawnPlayer(playerid);
gunstreak[playerid] = 0;
gungameclose = 0;
dm[5][playerid] = 0;
Map[playerid] = 0;
SendClientMessage(playerid,SERVER,"[SERVER] Die Runde ist vorbei!");
SpawnPlayer(killerid);
gunstreak[killerid] = 0;
gungameclose = 0;
dm[5][killerid] = 0;
Map[killerid] = 0;
SendClientMessage(killerid,SERVER,"[SERVER] Die Runde ist vorbei!");
}
}
Ich will gungame(waffenspiel) scripten aber nach dem man stirbt bekommt man keine Waffen, ich habe auch keine Ahnung wieso
OnPlayerSpawn
else if(dm[5][playerid] == 1)
{
new Random = random(sizeof(dmspawn));
SetPlayerInterior(playerid,10);
SetPlayerPos(playerid,dmspawn[Random][0],dmspawn[Random][1],dmspawn[Random][2]);
switch(gunstreak[playerid])
{
case 1:
{
GivePlayerWeapon(playerid,23,1339);
gunstreak[playerid] = 1;
}
case 2:
{
GivePlayerWeapon(playerid,32,1339);
gunstreak[playerid] = 2;
}
case 3:
{
GivePlayerWeapon(playerid,25,1339);
gunstreak[playerid] = 3;
}
case 4:
{
GivePlayerWeapon(playerid,4,1);
gunstreak[playerid] = 3;
}
}
}
//OnPlayerDeath
//gungame
gunstreak[killerid] +=1;
gunstreak[playerid] --;
switch(gunstreak[killerid])
{
case 1:
{
GivePlayerWeapon(playerid,32,1337);
gunstreak[killerid] = 1;
}
case 2:
{
GivePlayerWeapon(playerid,29,1337);
gunstreak[killerid] = 2;
}
case 3:
{
GivePlayerWeapon(playerid,25,1337);
gunstreak[killerid] = 3;
}
case 4:
{
GivePlayerWeapon(playerid,4,1);
gunstreak[killerid] = 4;
}
case 5:
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(dm[5][i] == 1)
{
SpawnPlayer(i);
gunstreak[i] = 0;
gungameclose = 0;
dm[5][i] = 0;
Map[i] = 0;
SendClientMessage(playerid,SERVER,"[SERVER] Die Runde ist vorbei!");
}
}
}
}
Also was definitiv in 59 von 60 fällen falsch ist, ist deine Rechnung minuten = differenz / 60, da dort fast immer ne Dezimalzahl und somit Float rauskommen wird.
Vielleicht liegts schon daran, nen anderen Fehler seh ich so auf Anhieb nicht.
Was ist da falsch? zu was soll ich es ändern?
Diese Zahl wird wohl der Unix Timestamp sein, den du auch eingetragen hast oO Aber warum sollte der runter gehen? Das ist in deinem Script nicht veranlasst und auch garnicht notwendig.
Was verstehst du unter "passiert nichts"? Kannst du einfach normal weiterzocken während du gebanned sein solltest, oder kannst du dich garnicht mehr einloggen?
Kann mich ganz normal einloggen
ocmd:tban(playerid,params[])
{
new pID,grund[64],dauer;
if(!isPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,GRAU,"Du bist kein Admin!");
if(sscanf(params, "us[64]i", pID, grund,dauer))return SendClientMessage(playerid,GRAU, "/tban [SpielerName/ID] [Grund] [Dauer (in Minuten)]");
TBan(pID,grund,dauer,playerid);
return 1;
}
stock TBan(playerid,const string[],dauer,bannerid)
{
new timestamp,str[128];
timestamp = gettime();
new sekunden = dauer * 60;
timestamp += sekunden;
new name[MAX_PLAYER_NAME],bannername[MAX_PLAYER_NAME];
GetPlayerName(playerid,name,sizeof(name));
GetPlayerName(bannerid,bannername,sizeof(bannername));
format(str,sizeof(str),"AdmCmd: %s wurde von %s für %d Minuten gebannt, Grund: %s ",name,bannername,dauer,string);
SendClientMessageToAll(ROT,str);
Kick(playerid);
mysql_SetInt("accounts", "tBan", timestamp, "Name", name);
return 1;
}
stock LoadPlayer(playerid)
{
new str5[128];
new timestamp = gettime();
new bisgebannt = mysql_GetInt("accounts", "tBan", "Name", SpielerName(playerid));
if(timestamp < bisgebannt)
{
new differenz = bisgebannt - timestamp;
new minuten = differenz / 60;
new str[64];
format(str,sizeof(str),"Dein Account ist noch für %i Minuten gebannt!",minuten);
SendClientMessage(playerid,ROT,str);
Kick(playerid);
}
if(timestamp < bisgemuted)
{
new differenz = bisgebannt - timestamp;
new minuten = differenz / 60;
new str[64];
format(str,sizeof(str),"Dein Account ist noch für %i Minuten gemuted!",minuten);
SendClientMessage(playerid,ROT,str);
Kick(playerid);
}
Der trägt in die Datebank irendeine lange Zahl ein z.b 5345151 aber wenn ich mich mit dem Account einlogge passiert nichts und in der Datenbank geht die Zahl auch nicht runter
mfg
genau so meine ich das
Danke <3, bist der beste! Versuche es schon seit Tagen es zu fixxen
was meine ich mit den zurücksetzen?
Auf 0 setzen die werte
wenn er connectet dann so mit den werten
SpielerInfo[playerid][pLevel] = 0;
So?
public OnPlayerConnect(playerid)
{
new text[256];
SetPlayerColor(playerid,0xFFFFFF00);
if(IsPlayerNPC(playerid))return 1;
ResetPlayer(playerid);
if(SpielerInfo[playerid][LoggedIn] == 0)
{
if(mysql_CheckAccount(playerid) == 0)
{
format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen auf Pure Gaming, {00B700}%s {FFFFFF}!\nEs wurde kein Account in der Datenbank mit deinem Namen gefunden.\nAccount legst du an, indem du ein Accountpasswort eingibst und auf Registrieren drückst.",SpielerName(playerid));
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register",text,"Register","Exit");
}
else if(mysql_CheckAccount(playerid) == 1)
{
format(text,sizeof(text),"{FFFFFF}Herzlich Willkommen zurück auf Pure Gaming, {00B700}%s {FFFFFF}!\nBitte gib unten in das Eingabefeld dein Accountpasswort ein,\num dich einzuloggen. Anschließend werden deine Accountdaten geladen.",SpielerName(playerid));
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Login",text,"Login","Abbrechen");
}
SetTimerEx("Connect",1104,0,"d",playerid);
}
stock ResetPlayer(playerid)
{
SpielerInfo[playerid][LoggedIn] = 0;
SpielerInfo[playerid][pLevel] = 0;
SpielerInfo[playerid][Admin] = 0;
SpielerInfo[playerid][pGeld] = 0;
SpielerInfo[playerid][pKills] = 0;
SpielerInfo[playerid][pDeaths] = 0;
return 1;
}
Du solltest Enum werte auch beim Connect auf 0 setzen, da wenn ein neuer Spieler on kommt, übernimmt er die alten werde des Spielers daher kommt das
Wie meinst du das?
enum SpielerDaten
{
pName[MAX_PLAYER_NAME],
pLevel,
pGeld,
pKills,
pDeaths,
Float:pHealth,
Admin,
ADuty,
APrison,
LoggedIn,
Muted,
BHopWarns,
pBanned,
pTot,
pWarn,
pSkin
}
new SpielerInfo[MAX_PLAYERS][SpielerDaten];
Ist es möglich, das sich deine Datenbank, mit einer anderen überschneidet?
Habe nur eine
Hey,
Ich verstehe nicht was da los ist, in der Datenbank ist alles auf 0 Adminlevel unso Geld etc aber ingame /stats habe ich 1Warn 3500Geld Adminlevel 5 etc und kills death obwohl das garnicht stimmt?
Screen:http://www.imagebanana.com/view/ep0tge11/Unbenannt.png
http://www.imagebanana.com/view/78xc7gkw/samp313.png
stock LoadPlayer(playerid)
{
new str5[128];
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][pBanned] = mysql_GetInt("accounts", "Bann", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pWarn] = mysql_GetInt("accounts", "Warn", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pDeaths] = mysql_GetInt("accounts", "Deaths", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][Admin] = mysql_GetInt("accounts", "AdmLevel", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][APrison] = mysql_GetInt("accounts", "APrison", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][Muted] = mysql_GetInt("accounts", "Muted", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pTot] = mysql_GetInt("accounts", "Tot", "Name", SpielerInfo[playerid][pName]);
SpielerInfo[playerid][pSkin] = mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]);
GivePlayerMoney(playerid, SpielerInfo[playerid][pGeld]);
SetPlayerSkin(playerid, SpielerInfo[playerid][pSkin]);
SetPlayerScore(playerid,SpielerInfo[playerid][pLevel]);
}
if(SpielerInfo[playerid][pWarn] >4)
{
format(str5,128,"[SERVER] Dein Account %s wurde gebannt, Grund: 5/5 Verwarnungen",SpielerName(playerid));
SendClientMessage(playerid,ROT,str5);
Kick(playerid);
}
if(SpielerInfo[playerid][pBanned] == 1)
{
format(str5,128,"[SERVER] Dein Account %s wurde gebannt!");
SendClientMessage(playerid,ROT,str5);
Kick(playerid);
}
return 1;
}
stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(SpielerInfo[playerid][LoggedIn] == 1)
{
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", "Bann", SpielerInfo[playerid][pBanned], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Warn", SpielerInfo[playerid][pWarn], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Deaths", SpielerInfo[playerid][pDeaths], "Name", SpielerInfo[playerid][pName]);
mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "AdmLevel", SpielerInfo[playerid][Admin], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "APrison", SpielerInfo[playerid][APrison], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Muted", SpielerInfo[playerid][Muted], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Tot", SpielerInfo[playerid][pTot], "Name", SpielerInfo[playerid][pName]);
mysql_SetInt("accounts", "Skin", SpielerInfo[playerid][pSkin], "Name", SpielerInfo[playerid][pName]);
// pSkin & pTod
SpielerInfo[playerid][ADuty] = 0;
SpielerInfo[playerid][LoggedIn] = 0;
SpielerInfo[playerid][BHopWarns] = 0;
}
}
return 1;
}
Ich habe ein Problem undzwar, wenn sich einer registriert zum erstenmal
und dann z.b paar kills oder so macht, bekommt er kein Score
dazugeschrieben oder ich kann dem auch kein Adminevel etc geben, aber
wenn er einmal reloggt klappt alles wie gewohnt?
An was könnte das liegen, ich habe das Tutorial von Maddin nach gemacht.
Benutze Mysql Plugin R5 - Tutorial von Maddin
Code:
stock LoadPlayer(playerid)
{
new str5[128];
new timestamp = gettime();
new bisgebannt = mysql_GetInt("accounts", "TBan", "Name", SpielerName(playerid));
new bisgemuted = mysql_GetInt("accounts", "Mute", "Name", SpielerName(playerid));
new bispremium = mysql_GetInt("accounts", "Premium", "Name", SpielerName(playerid));
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
GetPlayerName(playerid, SpielerInfo[playerid][pNamee], MAX_PLAYER_NAME);
SpielerInfo[playerid][pLevel] = mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pNamee]);
SpielerInfo[playerid][pGeld] = mysql_GetInt("accounts", "Geld", "Name", SpielerInfo[playerid][pNamee]);
SpielerInfo[playerid][pCoins] = mysql_GetInt("accounts", "Coins", "Name", SpielerInfo[playerid][pNamee]);
SpielerInfo[playerid][pKills] = mysql_GetInt("accounts", "Kills", "Name", SpielerInfo[playerid][pNamee]);
SpielerInfo[playerid][pTode] = mysql_GetInt("accounts", "Tode", "Name", SpielerInfo[playerid][pNamee]);
SpielerInfo[playerid][pBanned] = mysql_GetInt("accounts", "Banned", "Name", SpielerInfo[playerid][pNamee]);
SpielerInfo[playerid][pWarn] = mysql_GetInt("accounts", "Verwarnung", "Name", SpielerInfo[playerid][pNamee]);
SpielerInfo[playerid][pAdminlevel] = mysql_GetInt("accounts", "Adminlevel", "Name", SpielerInfo[playerid][pNamee]);
GivePlayerMoney(playerid,SpielerInfo[playerid][pGeld]);
SetPlayerScore(playerid,SpielerInfo[playerid][pLevel]);
}
if(SpielerInfo[playerid][pWarn] >4)
{
format(str5,128,"[SERVER] Dein Account %s wurde gebannt, Grund: 5/5 Verwarnungen",SpielerName(playerid));
SendClientMessage(playerid,ROT,str5);
Kick(playerid);
}
if(SpielerInfo[playerid][pBanned] == 1)
{
format(SpielerInfo[playerid][pBanngrund],128,"Dieser Account wurde gebannt! Grund: %s Admin: %s.", mysql_GetString("accounts", "Banngrund", "Name", SpielerInfo[playerid][pNamee]),mysql_GetString("accounts","Banner","Name",SpielerInfo[playerid][pNamee]));
SendClientMessage(playerid,ROT,SpielerInfo[playerid][pBanngrund]);
Kick(playerid);
}
if(timestamp < bisgebannt)
{
new differenz = bisgebannt - timestamp;
new minuten = differenz / 60;
new str[64];
format(str,sizeof(str),"Dein Account ist noch für %i Minuten gebannt!",minuten);
SendClientMessage(playerid,ROT,str);
Kick(playerid);
}
if(timestamp < bispremium)
{
new differenz = bispremium - timestamp;
new minuten = differenz / 60;
new str[64];
format(str,sizeof(str),"Dein Account hat noch für %i Tage Premium!",minuten);
SendClientMessage(playerid,ROT,str);
Kick(playerid);
}
if(timestamp < bisgemuted)
{
new differenz = bisgebannt - timestamp;
new minuten = differenz / 60;
new str[64];
format(str,sizeof(str),"Dein Account ist noch für %i Minuten gemuted!",minuten);
SendClientMessage(playerid,ROT,str);
Kick(playerid);
}
return 1;
}
stock SavePlayer(playerid)
{
if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
{
if(GetPVarInt(playerid,"Eingeloggt") == 1)
{
mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pNamee]);
mysql_SetInt("accounts", "Geld", SpielerInfo[playerid][pGeld], "Name", SpielerInfo[playerid][pNamee]);
mysql_SetInt("accounts", "Coins", SpielerInfo[playerid][pCoins], "Name", SpielerInfo[playerid][pNamee]);
mysql_SetInt("accounts", "Banned", SpielerInfo[playerid][pBanned], "Name", SpielerInfo[playerid][pNamee]);
mysql_SetInt("accounts", "Verwarnung", SpielerInfo[playerid][pWarn], "Name", SpielerInfo[playerid][pNamee]);
mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pNamee]);
mysql_SetInt("accounts", "Adminlevel", SpielerInfo[playerid][pAdminlevel], "Name", SpielerInfo[playerid][pNamee]);
mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pNamee]);
mysql_SetInt("accounts", "Mute", SpielerInfo[playerid][pMute], "Name", SpielerInfo[playerid][pNamee]);
mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pNamee]);
}
}
return 1;
}
switch(dialogid)
{
case DIALOG_REGISTER:
{
if(response)
{
if(strlen(inputtext) == 0)
{
ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_INPUT,"Register","Das angegebene Passwort war zu Kurz...\nBitte Registrier dich jetzt mit einem Passwort:","Register","Abbrechen");
return 1;
}
else
{
CreateAccount(playerid, inputtext);
SetPVarInt(playerid,"Eingeloggt",1);
return 1;
}
}
else
{
Kick(playerid);
}
}