Optymalizacja kodu Rang
maciej916
26.04.2012
Wiem że ten kod nie jest dobrze zoptymalizowany. jak go zoptymalizować ?
Użytkownik maciej916 edytował ten post 26.04.2012 16:38
#include <amxmodx>
#include <amxmisc>
#include <csx>
#define PLUGIN "Rangi"
#define VERSION "1.2"
#define AUTHOR "Bulle [t]"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /ranga", "ranga", 0, "- wyswietla range i statystyki")
}
public ranga(id)
{
static stats[8], body[8]
get_user_stats(id, stats, body)
new ranga[38]
if ( stats[0] >= 0 && stats[0] <= 29)
format(ranga,29,"Spawacz el. Drewnianych")
else if ( stats[0] >= 30 && stats[0] <= 59)
format(ranga,29,"Pracownik Fizyczny")
else if ( stats[0] >= 60 && stats[0] <= 119)
format(ranga,29,"Znakomity Pracownik")
else if ( stats[0] >= 120 && stats[0] <= 209)
format(ranga,29,"Majster")
else if ( stats[0] >= 210 && stats[0] <= 324)
format(ranga,29,"Starszy Majster")
else if ( stats[0] >= 325 && stats[0] <= 499)
format(ranga,29,"Pracownik Fizyczny")
else if ( stats[0] >= 500 && stats[0] <= 729)
format(ranga,29,"Dekorator")
else if ( stats[0] >= 730 && stats[0] <= 999)
format(ranga,29,"Budowlaniec")
else if ( stats[0] >= 1000 && stats[0] <= 1399)
format(ranga,29,"Inzynier")
else if ( stats[0] >= 1400 && stats[0] <= 1849)
format(ranga,29,"Konstruktor")
else if ( stats[0] >= 1850 && stats[0] <= 2299)
format(ranga,29,"Konstruktor Budowlany")
else if ( stats[0] >= 2300 && stats[0] <= 2899)
format(ranga,29,"Projektant")
else if ( stats[0] >= 2900 && stats[0] <= 3549)
format(ranga,29,"Urbanista")
else if ( stats[0] >= 3550 && stats[0] <= 4199)
format(ranga,29,"Architekt")
else if ( stats[0] >= 4200 && stats[0] <= 4999)
format(ranga,29,"Mistrz Architektury Budowlanej")
else if ( stats[0] >= 5000 && stats[0] <= 9999)
format(ranga,29,"Reszta Jest Milczeniem")
set_hudmessage(255, 255, 255, 0.15, 0.45)
show_hudmessage(id, "Ranga: %s^nZabojstw: %d",ranga,stats[0])
}
Użytkownik maciej916 edytował ten post 26.04.2012 16:38
mierzwi 26.04.2012
możesz zrobić tak
switch( stats[ 0 ] ) { case 0..29: formatex( ranga, sizeof ( ranga ) - 1, "Spawacz el. Drewnianych" ); case 30..59: formatex( ranga, sizeof ( ranga ) - 1, "Pracownik Fizyczny" ); /* I TAK DALEJ */ } /* ============================ LUB ===================================*/ new const g_sWymogi[] = { 30, 60, 120, 210 }; new const g_sRangi[][] = { "Spawacz el. drewnianych", "Pracownik fizyczny", "Znakomity pracownik", "Majster" }; /* W FUNKCJI */ new iLev; for( new i = 0; i < sizeof ( g_sWymogi ); i++ ) { if( stats[ 0 ] > g_sWymogi[ i ] ) iLev++; else break; } formatex( ranga, sizeof ( ranga ) - 1, "%s", g_sRangi[ iLev ] );
maciej916
26.04.2012
czyli cały kod ma wyglądać tak ?
jakieś błędy są
Użytkownik maciej916 edytował ten post 26.04.2012 17:49
#include <amxmodx>
#include <amxmisc>
#include <csx>
#define PLUGIN "Rangi"
#define VERSION "1.2"
#define AUTHOR "Bulle [t]"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /ranga", "ranga", 0, "- wyswietla range i statystyki")
}
new const g_sRangi[][] =
{
"Spawacz el. Drewnianych",
"Spawacz el. Metalowych",
"Pracownik Fizyczny",
"Majster",
"Starszy Majster",
"Pracownik Fizyczny",
"Dekorator",
"Budowlaniec",
"Inzynier",
"Konstruktor",
"Konstruktor Budowlany",
"Projektant",
"Urbanista",
"Architekt",
"Mistrz Architektury Budowlanej",
"Reszta Jest Milczeniem",
};
new const g_sWymogi[] =
{
0,
30,
60,
120,
210,
325,
500,
730,
1000,
1400,
1850,
2300,
2900,
3550,
4200,
5000
};
new iLev;
for( new i = 0; i < sizeof ( g_sWymogi ); i++ )
{
if( stats[ 0 ] > g_sWymogi[ i ] )
iLev++;
else
break;
}
set_hudmessage(255, 255, 255, 0.15, 0.45)
show_hudmessage(id, "Ranga: %s^nZabojstw: %d",ranga,stats[0])
}
jakieś błędy są
rangi.sma(57) : error 010: invalid function or declaration
rangi.sma(59) : error 010: invalid function or declaration
rangi.sma(62) : error 010: invalid function or declaration
rangi.sma(63) : error 010: invalid function or declaration
rangi.sma(65) : error 021: symbol already defined: "set_hudmessage"
rangi.sma(67) : warning 203: symbol is never used: "g_sRangi"
rangi.sma(67) : warning 203: symbol is never used: "g_sWymogi"
rangi.sma(67) : warning 203: symbol is never used: "iLev"
Użytkownik maciej916 edytował ten post 26.04.2012 17:49
mierzwi 26.04.2012
nie wiem po co za optymalizowanie się bierzesz jak podstaw nie znasz
Użytkownik emu edytował ten post 26.04.2012 18:46
/* Plugin generated by AMXX-Studio */ #include < amxmodx > #include < csx > #define PLUGIN "Rangi" #define VERSION "0.1a" #define AUTHOR "emu" new const g_sRangi[][] = { "Spawacz el. drewnianych", "Spawacz el. metalowych", "Pracownik fizyczny", "Majster", "Starszy majster", "Pracownik fizyczny", "Dekorator", "Budowlaniec", "Inzynier", "Konstruktor", "Konstruktor budowlany", "Projektant", "Urbanista", "Architekt", "Mistrz architektury budowlanej", "Reszta jest milczeniem" }; new const g_sWymogi[] = { 30, 60, 120, 210, 325, 500, 730, 1000, 1400, 1850, 2300, 2900, 3550, 4200, 5000 }; public plugin_init() { register_plugin( PLUGIN, VERSION, AUTHOR ); register_clcmd( "say /ranga", "cmd_Show" ); // Add your code here... } public cmd_Show(id) { static iStats[ 8 ], iBodyHits[ 8 ], iLev; get_user_stats( id, iStats, iBodyHits ); for( new i = 0; i < sizeof ( g_sWymogi ); i++ ) { if( iStats[ 0 ] > g_sWymogi[ i ] ) iLev++; else break; } set_hudmessage( 255, 255, 255, 0.15, 0.45 ); show_hudmessage( id, "Ranga: %s^nZabojstw: %d", g_sRangi[ iLev ], iStats[ 0 ] ); }
Użytkownik emu edytował ten post 26.04.2012 18:46
mierzwi 26.04.2012
to zdecyduj się co chcesz, no ja...., ja już Ci nie pomogę, bo kur... lecisz w kulki
K!113r
26.04.2012
wywalaj każdemu na HUD lub Color status - http://amxx.pl/topic...-diablobf2-itp/
możesz nawet zaszaleć i w tutorze
po prostu najprościej dajesz taska jak się gracz połączy z serwerem i co sekundę czy ile tam chcesz odświeżać mu (chociaż można odświeżać wolniej ) oczywiście w tasku dajesz wyświetlenie rangi (tylko konkretnemu graczowi, czasem jako index nie podaj 0 )
możesz nawet zaszaleć i w tutorze
po prostu najprościej dajesz taska jak się gracz połączy z serwerem i co sekundę czy ile tam chcesz odświeżać mu (chociaż można odświeżać wolniej ) oczywiście w tasku dajesz wyświetlenie rangi (tylko konkretnemu graczowi, czasem jako index nie podaj 0 )
K!113r
27.04.2012
wziąć i pobrać zabójstwa (te zapisane Ci chyba chodzi) do tablicy (na 32 graczy ), a druga liczba to ten twój limit podać (albo sprawdzaj jaką ma rangę i daj limit do next rangi albo względem zabójstw, sam sobie ustaw warunek)