was ist am meisten ressourcensparend und auch am schnellsten? zcmd oder ocmd?
von dcmd & strcmp habe ich gehört das es ziemlich resourcenfressent ist und voll lahm
Beiträge von NicoAiko
-
-
verstehe
-
braucht man denn noch sscanf?
das steht glaube ich nicht im tutorial
-
ShowPlayerDialog(playerid,STATS,DIALOG_STYLE_MSGBOX,"Stats",string2,"Schließen","Schließen");
//edit 1 format gelöscht
//edit 2 edit 1 eingefügt -
static gTeam[MAX_PLAYERS]; //glaube normal für gTeam
case 0: gTeam[playerid] = TEAM_Swat; //Das bedeutet das Skin 0 (Mittlerweile solltet ihr ja wissen das 0 = 1 ist!) im Ersten Team spielt!
case 1: gTeam[playerid] = TEAM_Swat;
//die ; am ende machen! -
statt #define gTEAM musst du static gTeam[MAX_PLAYERS]
C:\Users\Ey_havar\Desktop\Samp~~~Server\gamemodes\Gamemode.pwn(14) : warning 201: redefinition of constant/macro (symbol "gTEAM[MAX_PLAYERS]")
bedeutet das du das schonmal definiert hast
//edit die anderen errors kommen deswegen weil du kein ; am ende benutzt -
C:\Users\Ey_havar\Desktop\Samp~~~Server\gamemodes\Gamemode.pwn(13) : warning 201: redefinition of constant/macro (symbol "gTEAM{MAX_PLAYERS]")
in gTeam[MAX_PLAYERS] ändern
du hast ne {
//edit pls zeile 74 posten -
echt? weil hp2 wird nur in getplayerhealth benutzt aber nicht damit definiert
sprich: new Float:hp2; GetPlayerHealth(i,hp2); SetPlayerHealth(i,hp2+hp); <- Du
new Float:hp2 = GetPlayerHealth(i,hp2); SetPlayerHealth(i,hp2+hp); <- Ich -
public onplayerpickuppickup(playerid,pickupid)
{
//bla
return 1;//das return vor der letzten geschweiften klammer die den callback returnt in 1 machen
}
//edit /pwn geschlossen -
ganz einfach
if(listitem==0)
{
new Float:health;
SetPlayerHealth(playerid,GetPlayerHealth(playerid,health)+5);
GivePlayerMoney(playerid,-4);
}
oder so wie ichs habe
stock AddPlayerHealth(playerid,Float:blubbi)//irgwo ganz unten
{
new Float:GetHPFromPlayer;
SetPlayerHealth(playerid,GetPlayerHealth(playerid,GetHPFromPlayer)+blubbi);
return GetHPFromPlayer;
}
//und dann
if(listitem==0)
{
AddPlayerHealth(playerid,5);
GivePlayerMoney(playerid,-4);
}
//edit @ Inter & Neo
stock GivePlayerHealth(id,Float:hp)
{
new Float:hp2;
GetPlayerHealth(id,hp2);
SetPlayerHealth(id,hp2+hp);//das hier
return 1;
}
müsste falsch sein(makierung) außer du machst es so
stock GivePlayerHealth(id,Float:hp)
{
new Float:hp2 = GetPlayerHealth(id,hp2);
SetPlayerHealth(id,hp2+hp);
return 1;
} -
if (strcmp("/medicrespawn", cmdtext, true, 10) == 0)
{
if (PlayerInfo[playerid][pLeader] == 3)
{
for(new i = 0; i < sizeof(MedicVehs[i]); i++)
{
SetVehicleToRespawn(MedicVehs[i]);
}
}
return 1;
} -
ZitatCode
Alles anzeigen# include <iostream> // iostream includen ist wichtig! # include <string> // string für den namen! # include <conio.h> // für die Pause ! # include <cstdlib> // gehört einfach dazu :D using namespace std; // das auch wichtig, dann brauch man es net mehr vor cout! int main() // sehr wichtig sonst funkt gar nix ! { int rechenoption; long double zahl1, zahl2; cout << "Taschenrechner" << endl; cout << "Bitte wähle die gewünschte Rechenoption" << endl; cout << "1. Addition" << endl; cout << "2. Subtraktion" << endl; cout << "3. Multiplizieren" << endl; cout << "4. Division" << endl; cout << "5. Quatrieren" << endl; cin >> rechenoption; if (rechenoption == 1) { cout << "Sie haben sich fuer die Addition entschieden" << endl; cout << "Bitte geben Sie zwei Zahlen ein" << endl; cout << "Erste Zahl: " << endl; cin >> zahl1; cout << "Zweite Zahl: "; cin >> zahl2; cout << zahl1 << " + " << zahl2 << " = " << (zahl1 + zahl2); } if (rechenoption == 2) { cout << "Sie haben sich fuer die Subtraktion entschieden" << endl; cout << "Bitte geben Sie zwei Zahlen ein" << endl; cout << "Erste Zahl: " << endl; cin >> zahl1; cout << "Zweite Zahl: "; cin >> zahl2; cout << zahl1 << " - " << zahl2 << " = " << (zahl1 - zahl2); } if (rechenoption == 3) { cout << "Sie haben sich fuer die Multiplikation entschieden" << endl; cout << "Bitte geben Sie zwei Zahlen ein" << endl; cout << "Erste Zahl: " << endl; cin >> zahl1; cout << "Zweite Zahl: "; cin >> zahl2; cout << zahl1 << " mal " << zahl2 << " = " << (zahl1 * zahl2); } if (rechenoption == 4) { cout << "Sie haben sich fuer die Division entschieden" << endl; cout << "Bitte geben Sie zwei Zahlen ein" << endl; cout << "Erste Zahl: " << endl; cin >> zahl1; cout << "Zweite Zahl: "; cin >> zahl2; cout << zahl1 << " divitiert " << zahl2 << " = " << (zahl1 / zahl2); } if (rechenoption == 5) { cout << "Sie haben sich fuer das Quatrieren entschieden" << endl; cout << "Bitte geben Sie eine Zahl ein" << endl; cout << "Zahl: " << endl; cin >> zahl1; cout << zahl1 << " mal " << zahl1 << " = " << (zahl1 * zahl1); } cout << endl; cout << endl; cout << "Hoffe ich konnte dir helfen" << endl; cout << endl; cout << endl; cout << "Ich arbeite derzeit noch am design" << endl; cout << "So ein schwarzer kasten gefaellt doch niemanden" << endl; cout << "Made by Obi (c)" << endl; cout << "Enter um zu schliessen!"; getch(); // lässt konsole offen bleiben! }
das geht auch kürzer
C
Alles anzeigen#include <cstdlib> #include <iostream> #include <string> #include <conio.h> using namespace std; int main() { cout << "Willkommen zu Nicos Taschenrechner aufem PC :D" << endl; cout << "Gebe die Sachen ein die du ausrechnen möchtest" << endl; cout << "1 = Addieren(Plus nehmen), 2 = Subtrahieren(Minus nehmen)" << '\n' << "3 = Multiplizieren(Mal nehmen), 4 = Dividieren(Geteilt nehmen)" << '\n' << "5 = Quadrieren" << endl; int zahl1,zahl2,rechenoption,ergebnis,zahlenabfrage; string zeichen; cin >> zahl1; cin >> rechenoption; if(rechenoption == 1) { cin >> zahl2; zahlenabfrage = zahl2; zeichen = " + "; ergebnis = (zahl1 + zahl2); } else if(rechenoption == 2) { cin >> zahl2; zahlenabfrage = zahl2; zeichen = " - "; ergebnis = (zahl1 - zahl2); } else if(rechenoption == 3) { cin >> zahl2; zahlenabfrage = zahl2; zeichen = " * "; ergebnis = (zahl1 * zahl2); } else if(rechenoption == 4) { cin >> zahl2; zahlenabfrage = zahl2; zeichen = " / "; ergebnis = (zahl1 / zahl2); } else if(rechenoption == 5) { zahlenabfrage = zahl1; zeichen = " hoch 2 "; ergebnis = (zahl1 * zahl1); } cout << "Ergebnis: " << zahl1 << zeichen << zahlenabfrage << " = " << ergebnis; cout << '\n' << '\n'; cout << "Hoffe ich konnte dir helfen" << endl; cout << '\n' << '\n'; cout << "Ich arbeite derzeit noch am design" << endl; cout << "So ein schwarzer kasten gefaellt doch niemanden" << endl; cout << "Made by Obi (c)" << endl; cout << "Enter um zu schliessen!"; getch(); }
einzige schwäche die ich net lösen kann ist beim quadrieren die 2te zahl weg zu lassen(außer natürlich in die else if abfrage rein zu tun aber das müsste ich dann bei allen machen und das wäre wieder mehr zeilen xD
//edit mein taschenrechner (in 10 minuten) -
Zitat
PutPlayerInVehicle(playerid,carid, 0);//und hier wird der spieler in das auto gesetzt
wird gar nicht gebraucht, hab ich auch net da der spieler im fahrzeug drin ist, wird der spieler sozusagen "deaktiviert" und putplayerinvehicle ist unnütz.
einfaches beispiel:
new spieler[MAX_PLAYERS] = 1; // Das bist du, die 1 steht dafür das du normal gehst (also nicht im auto bist)
new auto[MAX_PLAYERS] = 0; // das ist das auto in das du einsteigen wirst... (also noch deaktiviert)
//jetzt ein standart callback
public OnPlayerEnterVehicle(playerid,vehicleid,ispassenger)
{
spieler[playerid] = 0; //der spieler wird deaktiviert das heißt du gehst in den automodus
auto[playerid] = 1; //du bist nun im auto und der automodus ist aktiviert.
return 1;
}
//jetzt wenn er aussteigt
public OnPlayerExitVehicle(playerid,vehicleid)
{
spieler[playerid] = 1;
auto[playerid] = 0;
//wieder normalzustand
return 1;
}
//jetzt der befehl (ich hab ocmd)
ocmd:gotols(playerid,params[])
{
if(GetPVarInt(playerid,"Adminlevel") >= 1)//ich benutz kein enum :P (das ist das gleiche wie PlayerInfo/Spieler/etc.pp.)
{
if(IsPlayerInAnyVehicle(playerid))// <-- das ist das gleiche wie if(auto[playerid] == 1)
SetVehiclePos(GetPlayerVehicleID(playerid),x,y,z);//x,y,z sind die koordinaten
else SetPlayerPos(playerid,x,y,z); // siehe oben ^^
}
else return SendClientMessage(playerid,rot,"Du bist nicht befugt diesen befehl zu nutzen!");
return 1;
}
hoffe konnte helfen -
Hallo liebe Brotfische heute stelle ich euch mal mein Tutorial vom Definieren von Fraktionsfahrzeugen.
Schritt 1:
Wir erstellen ein enum:
enum cInfo //name des enums (einstellbar)
{
fcid // ebenfalls einstellbar (das ist der name für die definition)
};
new FVehi[MAX_VEHICLES][cInfo];//Das ist das new für den enum (sowie PlayerInfo/Spieler o.a.)
Das brauchen wir für den Befehl (Siehe Schritt: 4)Schritt 2:
Wir erstellen die definition für die Cars:
//new fcname[anzahl der cars];
//nun ein Beispiel:
new pdcars[1];//pd ist ja allgemein bekannt (polizei) [1] ist die anzahl der carsSchritt 3:
nun kommen wir zur definition mit "pdcars" (siehe Schritt: 2)
public OnGameModeInit()
{
pdcar[0] = AddStaticVehicle(id,usw...); //pdcar[0] weil man immer mit [0] anfängt
SetFJCarID(pdcar[0],1); //pdcar[0] angleichen an die definition die 1 steht für das team bzw den job (siehe Schritt: 4)
return 1;
}
Schritt 4:
der Befehl ist eigentlich ganz simpel,
stock SetFJCarID(carid,zahl) //carid ist eigentlich klar... (die definition eines Fahrzeugs); zahl ist der wert den du eingibst
{
return FJVehi[carid][fcid] = zahl; //die carid sorgt dafür das es ein vehicle ist; fcid wisst ihr ja; das wird dann in die zahl geändert.
}
Vorsicht:
- 1. keine Float-Zahlen, aber wenn du das so haben willst, dann fcid in Float:fcid ändern
- 2. die Jobzahlen & Fraktionszahlen nicht zusammen mischen d.h. kein SetFJCarID(bus[0],1); & SetFJCarID(pdcar[0],1); das würde dazu führen, dass es zur überschneidung kommt. also pdcar,1 bus,2 usw.Bugs & Errors bitte melden
danke -
syntax error -.- außerdem muss immer nach strcmp ne ( oder net?
//edit:
hast n kleinen fehler gemacht statt if(strcmp("Passwort",inputtext,true))trotzdem danke problem gelöst (testen muss ichs noch)
-
mach ma n else unter der rangeofpoint klammer
Zitatdcmd_abheben(playerid,params[])
{if(IsPlayerInRangeOfPoint(playerid,5.0,1177.4164,-1323.9993,14.0873))
{
if(!strlen(params))
{
return SendClientMessage(playerid,rot,"Nutze: /abheben [Betrag]");
}
new
betrag=strval(params);new name[MAX_PLAYER_NAME],string[64];
GetPlayerName(playerid,name,sizeof(name));
format(string,sizeof(string),"/Spieler/%s.ini",name);new guthaben = dini_Int(string,"Bank");
if(betrag<=guthaben)
{GivePlayerMoney(playerid,betrag);
new total = guthaben-betrag;
new popel[64];
format(popel,sizeof(popel),"%i",total);
dini_Set(string,"Bank",popel);
new sStr[64];
format(sStr,sizeof(sStr),"Geld Abgehoben (Betrag: %i) (Verb. Guthaben: %i)",betrag,total);
SendClientMessage(playerid,grün,sStr);
}
else SendClientMessage(playerid,rot,"Du hast nicht genug Guthaben");}
//hier einfügen
return 1;
}ein else return SendClientMessage(playerid,rot,"Du bist nicht am/in der ATM/Bank!");
MfG -
Hallöle Brotfische,
ich habe ein Problem unzwar das ich versuche, dass ich ein Register/Login GUI System zu machen das ganz ohne enum ist sondern nur mit PVars aber es klappt mit dem Login Teil noch nicht ganz.
Hier die Errors:
C:\Users\Nico\Desktop\server 0.3b\gamemodes\LSRL-Script.pwn(1970) : error 035: argument type mismatch (argument 1)
und hier die Zeile
if(strcmp(GetPVarString(playerid,"Passwort",string,128),inputtext,true))
ich bekomm das nicht ganz hin...Vielen Dank im voraus
MfG
//edit Überschrift geändert zur Sache weswegen der Thread
-
GivePlayerMoney(i, checks);
//in
PlayerInfo[i][pAccount] += checks
//ändern -
was gibt ident[9] denn eig an? weil falls du ident[9] als string gemacht hast gibts n problem
-
public OnPlayerStateChange(playerid,newstate,oldstate)
{
if(newstate == PLAYER_STATE_ONFOOT || newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_DRIVER)
{
if(IstSpielerInGangzone(playerid))//anpassen mit einer public oder mit IsPlayerInRangeOfPoint/PlayerToPoint(GF)
{
for(new i=0;i<13;i++)
{
new weapon[13][2];
PlayerWeapons[playerid] = GetPlayerWeaponData(playerid,i,weapon[i][0],weapon[i][1]);
PlayerWeaponAmmo[playerid] = GetPlayerAmmo(playerid);
ResetPlayerWeapons(playerid);
}
}
else
{
GivePlayerWeapon(playerid,PlayerWeapons[playerid],PlayerWeaponAmmo[playerid]);
}
}
return 1;
}
//edit public vergessen
//edit 2 waffensache geändert
//edit 3 Klammerfehler weggemacht