Nach resetPlayer suchen und weg machen.
Oder, wenn du es nicht findest, warum auch immer, oben im Code hinzufügen:
#pragma unused resetPlayer
Das heißt einfach, dass etwas definiert wurde, aber nie benutzt wird.
Nach resetPlayer suchen und weg machen.
Oder, wenn du es nicht findest, warum auch immer, oben im Code hinzufügen:
#pragma unused resetPlayer
Das heißt einfach, dass etwas definiert wurde, aber nie benutzt wird.
public minute()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i))continue;
if(GetPVarInt(i,"loggedin")==0)continue;
//Spieler ist eingeloggt & online
SetPVarInt(i,"Paytime",GetPVarInt(i,"Paytime")+1);
if(GetPVarInt(i,"Paytime")==60)
{
SetPVarInt(i,"Paytime",0);
SendClientMessage(i,ROT,"|_______________Zahltag_______________|");
SendClientMessage(i,ROT,"Geld: 5000");
GivePlayerMoney(i,5000);
new Respektpunkte=GetPVarInt(i,"Respektpunkte");
SetPVarInt(i,"Respektpunkte",Respektpunkte+=1);
if(GetPVarInt(i,"Respektpunkte")==GetPlayerScore(i)*8)
{
GivePlayerScore(i,1);
SetPVarInt(i,"Respektpunkte",0);
SendClientMessage(i,HBLAU,"Du bist ein Level höhrer Herzlichen Glückwunsch");
}
new string[128];
format(string,sizeof(string),"Respektpunkte: %i/%i",GetPVarInt(i,"Respektpunkte"), GetPlayerScore(i)*8); //Hier habe ich die Parameter geändert.
SendClientMessage(i,ROT,string);
SpielerSpeichern(i);
}
}
return 1;
}
Änderungen sollten selbsterklärend sein.
Bei mir gehts.
http://pokit.org/get/img/8ced8…fd65365f63d59b8493ff4.jpg
So gehts auch:
CREATE TABLE IF NOT EXISTS `accounts` (
`paydayhad` INT( 11 ) DEFAULT NULL ,
`cdplayer` INT( 11 ) DEFAULT NULL ,
`wins` INT( 11 ) DEFAULT NULL ,
`loses` INT( 11 ) DEFAULT NULL ,
`newsskill` INT( 6 ) NOT NULL DEFAULT '0',
`drugsskill` INT( 6 ) NOT NULL DEFAULT '0',
`cockskill` INT( 6 ) NOT NULL DEFAULT '0',
`fishskill` INT( 6 ) NOT NULL DEFAULT '0',
`farmerskill` INT( 6 ) NOT NULL DEFAULT '0',
`tut` INT( 11 ) DEFAULT NULL ,
`warns` INT( 11 ) DEFAULT NULL ,
`online` INT( 11 ) DEFAULT NULL ,
`pA` FLOAT NOT NULL ,
`pFarbe1` INT( 11 ) NOT NULL ,
`pFarbe2` INT( 11 ) NOT NULL ,
`pModel` INT( 11 ) NOT NULL ,
`pPreis1` INT( 11 ) NOT NULL ,
PRIMARY KEY ( `id` )) AUTO_INCREMENT =38897;
Wenn du noch immer Fehler bekommst, zeig nochmal deinen Code und die Fehler.
`id` INT( 11 ) DEFAULT NULL ,
unter der ersten Zeile einfügen. Du hast ja "id" nicht mal erstellt, da kannst du ihm auch keinen PRIMARY KEY zuweisen.
Es gibt sie doch noch, die strtok Nutzer, sehr schön ![]()
Zeig bitte noch wie du das Nagelband erstellst.
Bekommst du irgendwelche Meldungen, Nachrichten, was passiert wenn du den Command eingibst, was steht im Chat?
Och Leute:
default: {SendClientMessage(playerid, COLOR_RED, "Skin gewechselt);}
zu:
default: {SendClientMessage(playerid, COLOR_RED, "Skin gewechselt");}
Da fehlt schlichtweg ein " am Ende.
Durch Klammerfehler stürzt der Compiler nicht ab, du wirst nur 26 Errors bekommen.
dcmd_admin(playerid, params[])
{
new text[128], nachricht[144], aname[MAX_PLAYER_NAME]; //144 ist das Maximum in SendClientMessage & text ist ein string, also Array [110] lang.
if(IstSpielerAdmin(playerid, 1))
{
if(sscanf(params,"s[128]",text))
{
return SCM(playerid,hellrot,"Benutze: /admin <Text>");
}
else
{
GetPlayerName(playerid,aname,sizeof(aname));
format(nachricht,sizeof(nachricht),">>%s | %s: %s",sSpieler[playerid][AdminRang],aname,text); //ServerRang?? AdminRang.
for(new i = 0;i < MAX_PLAYERS; i++)
{
if(IstSpielerAdmin(i, 1))
{
SCM(i,gelb,nachricht); //kein return in schleifen!
}
}
}
}
return 1;
}
Erklärungen im Code.
Das kannst du machen, indem du einen Timer mit einer Sekunde erstellst, und bei diesem jedes mal dem Spieler von einer variable zeit eine Sekunde abziehst.
OnGameModeInit
SetTimer("PersoTimer", 888, 1); //888 ist etwas genauer eine Sekunde als 1000.
Unten im Code:
forward PersoTimer();
public PersoTimer()
{
for(new i=0; i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i) && PersoWurdeBestellt[i]==1)
{
WarteZeit[i]--;
if(WarteZeit[i] < 1)
{
PersoWurdeBestellt[i]=0; //und noch ne Nachricht, dass der Perso geholt werden kann.
}
}
}
return 1;
}
Im Command: Timer weg machen und
PersoWurdeBestellt[playerid] = 1;
WarteZeit[playerid]=3600; //1 Stunde (in Sekunden)
Beide Werte speicherst du dem Spieler in seine Datei/Datenbank wenn er den Server verlässt.
Ja.
Probiers einfach aus, dein PC wird schon nicht explodieren. ![]()
So hatte ich es geschrieben, haste richtig kopiert. ![]()
Wie gesagt, du fragst ab ob das Auto ein Krankenwagen ist. Daher die Abfrage auf diese Weise.
if(!IsAnAmbulance(GetPlayerVehicleID(verletzter)))
Du fragst ja ob das Auto ein Krankenwagen ist.
Das liegt daran, dass du die Position des Spielers zu weit vom.Krankenhaus entfernt gesetzt hast. Deshalb siehst du nur die LOD des Objekts.
Um das zu beheben einfach den Spieler nahe ans Krankenhaus setzen.
Was auch immer du gemacht hast. So wird es tun:
ShowPlayerDialog(playerid, Login, DIALOG_STYLE_PASSWORD, "San Andreas Roleplay: Login", "Willkommen zurück auf {009BFF}San Andreas Roleplay{FFFFFF}. Logge dich mit deinem Passwort ein.","Login","Abbruch");
Nicht vergessen den Script zu kompilieren und den Server neu zu starten.
Du musst das 0x am Anfang und das FF am Ende weg lassen.
{0xFFFFFFFF} => {FFFFFF}
Es ist praktisch: {RRGGBB}
@Poster oben: Weder noch gibt wirklich Sinn, ich würde da mal gerne sehen wir ihr die jeweilige Ansicht im Code vertreten würdet, so dass es auch funktioniert.
--------------------------------------
Im enum hinzufügen:
pToBanID,
pToBanID[128],
Diese brauchen wir, um später die Informationen zu speichern.
Definieren:
#define BAN_DIALOG 1337
Der Command:
ocmd:ban(playerid,params[])
{
new pID, grund[128],string[128];
if(!IsPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,FRot,"[ERROR:] Server unknow command ['/ban'], use '/help' .");
if(sscanf(params,"us",pID,grund))return SendClientMessage(playerid,FGrau,"Fehler: benutze /ban [ID] [Grund]");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,FGrau,"Fehler: Dieser spieler ist nicht online !");
if(IsPlayerNPC(pID))return SendClientMessage(playerid,FGrau,"Fehler: Du kannst keine NPCs bannen !");
if(pID == playerid)return SendClientMessage(playerid,FGrau,"Fehler: Du kannst dich nicht selber bannen!");
if(!IsPlayerAnAdmin(pID,6))
{
if(IsPlayerAnAdmin(pID,5))return SendClientMessage(playerid,FGrau,"Fehler: Du darfst keine admins bannen die über admin level 5 sind!");
}
format(string,sizeof(string),"Bis du sicher, dass du %s [ID: %d]\nmit dem Grund %s\nbannen willst?",pName[pID],pID,grund);
SpielerInfo[playerid][pToBanID] = pID; //Hier speichern wir die eingegebene ID.
SpielerInfo[playerid][pToBanID] = grund; //Hier speichern wir den eingegebenen Grund.
ShowPlayerDialog(playerid, BAN_DIALOG, DIALOG_STYLE_MSGBOX, "Bestätige:", string, "Ban!", "Abbrechen");
return 1;
}
OnDialogResponse:
if(dialogid == BAN_DIALOG && response == 1)
{
new pID, grund[128],string[128];
pID= SpielerInfo[playerid][pToBanID]; //Hier laden wir die ID
grund = SpielerInfo[playerid][pToBanGrund]; //Hier laden wir den Grund
if(!IsPlayerAnAdmin(playerid,4))return SendClientMessage(playerid,FRot,"[ERROR:] Server unknow command ['/ban'], use '/help' .");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid,FGrau,"Fehler: Dieser spieler ist nicht online !");
if(IsPlayerNPC(pID))return SendClientMessage(playerid,FGrau,"Fehler: Du kannst keine NPCs bannen !");
if(pID == playerid)return SendClientMessage(playerid,FGrau,"Fehler: Du kannst dich nicht selber bannen!");
if(!IsPlayerAnAdmin(pID,6))
{
if(IsPlayerAnAdmin(pID,5))return SendClientMessage(playerid,FGrau,"Fehler: Du darfst keine admins bannen die über admin level 5 sind!");
}
format(string,sizeof(string),"[SERVER:] %s [ID: %d] has been banned from the server ! Reason: %s",pName[pID],pID,grund);
SendClientMessageToAll(FRot,string);
SpielerInfo[pID][pGebannt] = 1;
SpielerInfo[pID][pAdmin] = 0;
mysql_SetString("accounts", "GebanntGrund", grund ,"Name", pName[pID]);
Kick(pID);
return 1;
}
Sollte verständlich sein, ist ja größtenteils eh dein Code, nur leicht verdreht. Ich gehe aber mal davon aus, dass es hier nicht nötig ist viel zu erklären, da der Code für sich selbst spricht.
Falls was unklar ist, kannst du ja fragen.
hm du hast Recht, warum?
http://wiki.sa-mp.com/wiki/Scripting_Basics_DE#Boolean
Boolesche Werte gibt es nur zwei. Die sind in PAWN als "true" (!= 0) und false (= 0) definiert. Du kannst, wenn du als Tag "bool" angibst, auch nur true oder false angeben, da weniger Speicher für die variable reserviert wird, und sie daher nur zwei Werte annehmen kann (0/1 = false/true). Durch die Angabe eines Integers (0/1/...) könntest du ja viel mehr angeben, was die Boolesche Variable sprengt. Was du aber machen kannst ist folgendes:
new bool:test;
test = bool:1;
Das würde nun true entsprechen. Wie schon gesagt würde auch "bool:1245221" true entsprechen, da true => != 0
--------------------
Zum Thread:
Das was [DT]deed in seinem ersten Post schon geschrieben hat, nur ohne bool, bzw. 1/0 geändert zu true/false (Erklärung oben^).
Ja das Problem ist ich weis nicht wie ich Sie von TAB entferne.
Gar nicht. Das geht nicht.
Färbt man den Name Schwarz, dann siehst du den Spieler auf dem Radar nicht mehr, sonst aber trotzdem noch.
Du hast auch ein Fehler, Jeffry:
Bei Punkt 4 unten hast du playerid benutzt.
Kommt davon wenn man zu viel Copy&Paste macht. Danke dir, sehr aufmerksam. ![]()
Übrigens, da du schreibst "auch ein Fehler": Ich sprach nicht von Fehlern, die kommen vor. Es ging darum, dass sich keiner Gedanken gemacht hat warum der Code nicht tut und einfach mal ins blaue geschossen hat.
Hier ein Video in den genau das gemacht wird, was du willst:
Ich bin zwar nicht so der Fan von Videos, aber das hier ist ganz in Ordnung. Musst du eventuell an deinen Code anpassen, zwecks Laden und Speichern.