Entweder habe ich was falsch verstanden oder es klappt nicht, aufjedenfall kommt beidesmal -1 raus.
//Edit: Deine Formatierung ist für n Arsch!
Ja, dann sind keine 3 Spieler in jedem Team vorhanden... ![]()
Entweder habe ich was falsch verstanden oder es klappt nicht, aufjedenfall kommt beidesmal -1 raus.
//Edit: Deine Formatierung ist für n Arsch!
Ja, dann sind keine 3 Spieler in jedem Team vorhanden... ![]()
Das kannst du so machen:
new r_Spieler[2][3] = {
{-1, ...}, {-1, ...}
};
for(new i,idx[2]; i<MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i)) continue;
if(gTeam[i] == TEAM_BLUE && idx[0] < sizeof r_Spieler[]) r_Spieler[0][idx[0]] = i,idx[0]++;
if(gTeam[i] == TEAM_GREEN && idx[1] < sizeof r_Spieler[]) r_Spieler[1][idx[1]] = i,idx[1]++;
}
//Und dann so:
if(r_Spieler[0][2] != -1)
{
//Nur wenn alle IDs vergeben sind:
new random_Spieler1 = r_Spieler[0][random(3)];
}
if(r_Spieler[1][2] != -1)
{
//Nur wenn alle IDs vergeben sind:
new random_Spieler2 = r_Spieler[1][random(3)];
}
mfg. ![]()
Binn ein noob
Ich merk das schon ![]()
Es heißt SendClientMessage mit E nicht SendClientMassage
mfg. ![]()
Obwohl ich streamer heruntergeladen hab
Aber eine veraltete Version davon...
Downloade dir hier die neuste: http://forum.sa-mp.com/showthread.php?t=102865
mfg. ![]()
Also würde es mich auch freuen, wenn das zufällig mal einer herausgefunden hat.
Lies doch den Text von Jeffry...
oder ihr verwendet mal google und findet auf Wikipedia folgendes:
Zitat von WikipediaUnmittelbar vor dem Übersetzen eines Programms in Maschinensprache fügt der Präprozessor Kopien der benötigten Includes an diejenigen Stellen des Programms ein, die vom Programmierer mit einer Include-Anweisung und dem Namen des jeweiligen Includes gekennzeichnet wurden.
mfg. ![]()
ich brauche include MDS
Ich denke, du suchst nach der MD5 Include? ![]()
Wenn sie aber wirklich MDS heißt, dann ist das keine public Include, dann musst du mal den Ersteller von dem Skript fragen ![]()
mfg. ![]()
//Edit:
Ich habe mal einen Fix geschrieben für den normalen Chat.
Ihr kennt das Problem alle, ihr wollt ein % Zeichen schreiben und es kommt nur ein #...
Das behebt ihr nun so:
stock _Fix(const string[],bool:chat=false) {
new tmp[145],pos = strfind(string,"#");
strcat(tmp,string);
if(pos == -1) return tmp;
for(;;) {
if(tmp[((pos-1) < 0)?0:(pos-1)] != '\\') {
strdel(tmp,pos,pos+1),strins(tmp,(!chat)?("%%"):("%%%%"),pos,sizeof tmp);
pos = strfind(tmp,"#",false,pos+((!chat)?(2):(4)));
}
else {
strdel(tmp,pos-1,pos);
pos = strfind(tmp,"#",false,pos);
}
if(pos == -1) break;
}
return tmp;
}
//Und unter OnPlayerText:
public OnPlayerText(playerid,text[]) {
format(text,146,_Fix(text)); //Das muss die 1. Zeile hier sein:
return 1;
}
//Wenn ihr allerdings mit einer eigenen Message arbeitet, dann so:
public OnPlayerText(playerid,text[]) {
format(text,146,_Fix(text,true)); //Das muss die 1. Zeile hier sein:
//Halt unten der Rest
SendClientMessage(playerid,-1,text);
return 0;
}
Dadurch wird aus dem # ein %...wenn ihr jetzt aber ein normales # inGame schreiben wollt, müsst ihr \# eingeben ![]()
//Fakultät:
Also, mir ist keine Funktion bekannt und habe auch noch keine gesehen (nicht mal im Englischen Forum), dass man die Fakultät berechnen kann.
Also, hier eine Funktion, mit der das möglich ist:
stock fac(x) {
if(x < 0) return 0;
if(0 <= x <= 1) return 1;
if(x==2) return x;
new y=1,i=x;
for(; i!=0; i--) y *= i;
return y;
}
//Anwendung:
new x = 5;
printf("Die Fakultät von %d ist: %d",x,fac(x));
//->: Die Fakultät von 5 ist: 120
Keywords: Fakultät, Factorial
mfg. ![]()
//Edit: Umbenannt wegen Pille...wobei das völlig egal ist, da man das eh selber kann <(^.^)>
//Edit²: Prozent-Fix
und wie könnte man es machen wenn man F/Enter drückt das man anderen leuten dan zu guckt ?
Hier paar Tipps:
Unter dem Callback OnPlayerKeyStateChange
if(newkeys & KEY_SECONDARY_ATTACK) //Das ist die enter taste
TogglePlayerSpectating(playerid, 1);
PlayerSpectatePlayer(playerid, targetplayerid, mode);
mfg. ![]()
Ne, sieht nicht gut aus, da ist n Klammer Fehler ![]()
Hier, machs mal so: http://pastebin.com/CcS8WdNF
mfg. ![]()
//Edit:
Jeffry: schau dir die Zeilen an:
if(dialogid==DIALOG_SUPMOBIL)
{
if(response==0) return 1;
}
if(response==1)
{
mfg. ![]()
Nene
Achso, dann so:
ocmd:setmoney(playerid,params[])
{
new pID, money;
if(sscanf(params,"ui",pID,money))return SendClientMessage(playerid,COLOR_RED,"Benutze: /setmoney [PlayerID] [Summe]");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_RED,"Ein Spieler mit dieser ID ist nicht online!");
sSpieler[pID][Geld] += money;
GivePlayerMoney(pID, sSpieler[pID][Geld]);
return 1;
}
mfg. ![]()
SetMoney, soll also das Geld setzen.
Sprich wenn du /setmoney 0 5000 eingibst, soll dieser Spieler egal, wie viel Geld er vorher hatte 5000$ haben?
Wenn ja, dann muss das so aussehen:
ocmd:setmoney(playerid,params[])
{
new pID, money;
if(sscanf(params,"ui",pID,money))return SendClientMessage(playerid,COLOR_RED,"Benutze: /setmoney [PlayerID] [Summe]");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_RED,"Ein Spieler mit dieser ID ist nicht online!");
ResetPlayerMoney(pID),sSpieler[pID][Geld]= money;
GivePlayerMoney(pID, money);
return 1;
}
mfg. ![]()
und was bedeuten diese ganzen nummern hier ?
Ich hab doch extra das Wiki verlinkt...das gibt es auch in Deutsch:
ApplyAnimation(playerid, animlib[], animname[], Float:fDelta, loop, lockx, locky, freeze, time, forcesync);
playerid Die ID des Spielers, der die Animation ausführen soll.
animlib[] Der Name der Bibliothek der Animation.
animname[] Der Name der Animation.
fDelta Die Geschwindigkeit der Animation.
loop 1, um die Animation wiederholen zu lassen, 0, um sie nur ein Mal abzuspielen.
lockx 0, um den Spieler auf die ursprüngliche X-Position zurückzubringen, nachdem die Animation fertig ist. 1 bewirkt das Gegenteil.
locky 0, um den Spieler auf die ursprüngliche Y-Position zurückzubringen, nachdem die Animation fertig ist. 1 bewirkt das Gegenteil.
freeze 0, um den Spieler nach der Animation wieder frei beweglich zu machen, 1, um ihn am Ende der Bewegung "einzufrieren".
time Länge der Animation in Millisekunden. Wird 0 angegeben, hört die Animation nicht von selbst auf.
forcesync 1, um die Animation mit allen Spielern zu synchronisieren (in allen Instanzen) (optional).
mfg. ![]()
oki und wie is die object id =?
Das ist einmal diese modelid: 14820 und irgendeine Platte drunter gesetzt glaube ich ![]()
mfg. ![]()
wie kann man sowas bauen ?
Also, das DJ-Board vor ihm sind einfach paar gemappte Objekte...
und die Animation die er macht, kannst du durch: ApplyAnimation machen.
Du solltest evtl unter der Kategorie DANCING nachschauen ![]()
mfg. ![]()
könntest du mir helfen mit dem timer ? habe noch nicht mit einem Timer gearbeitet wäre sehr nett
Du brauchst keinen Timer...lies dir nochmal meinen Post durch, nimm lieber gettime, als GetTickCount...
mfg. ![]()
Oder man nutzt einfach gettime, dann spart man sich den Timer ![]()
new var[MAX_PLAYERS];
//Unter OnPlayerConnect
var[playerid] = 0;
//Im Befehl
if((gettime()-var[playerid]) < 1000*60*5) return SendClientMessage(playerid,ROT,"Die 5 Minuten sind noch nicht Vorbei!");
var[playerid] = gettime();
mfg. ![]()
stock SaveGZ()
{
for(new i,string[128]; i<MAX_GZ; i++)
{
format(string,128,"UPDATE table_name SET owner='%s',maxX='%f' WHERE id='%d'",GZ[i][owner],GZ[i][max_x],i);
mysql_query(string);
}
return 1;
}
Halt das Query vollständig ausfüllen ![]()
mfg. ![]()
getPlayerName(playerid)
Bitte zeig mal, wie diese Funktion bei dir aussieht?! ![]()
Ich möchte von euch keinen Code sondern, wie man sowas umsetzen könnte.
Na...wie sollte man wohl sowas umsetzen...
Einfach einen Query schreiben, der so ungefähr aussehen müsste:
new string[128];
//Hier Insert, wenn es der erste eintrag ist
format(string,128,"INSERT INTO table_name (id,owner,maxX,maxY,minX,minY,flaggeX,...) VALUES (%d,'%s','%f','%f','%f','%f','%f',...)",zoneid,GZ[zoneid][owner],GZ[zoneid][max_x],...);
//Andernfalls Update
format(string,128,"UPDATE table_name SET owner='%s',maxX='%f' WHERE id='%d'",GZ[zoneid][owner],GZ[zoneid][max_x],zoneid);
mysql_query(string);
mfg. ![]()