[AMXX] Mapide reitingud

Vaata eelmist teemat Vaata järgmist teemat Go down

avatar
Tonight


Postitusi : 13724
Maine : 2396
Liitus : 19/02/2012
Vaata kasutaja profiili

PostitamineTonight on 01.04.15 21:52



Plugina kirjeldus: See plugin kuvab mängijale serverisse tulles informatsiooni mapi kohta.
Plugina nimi: Mapi reiting
Plugina versioon: 1.0.0
Plugina autor: Faval



Plugin sisaldab koheselt mappe:
35hp_2 (73/100)
35hp_favaleu (69/100)
aim_faval (79/100)
awp_india (74/100)
awp_melanie (76/100)
cs_assault (72/100)
cs_italy (84/100)
cs_office (77/100)
cs_sauna (62/100)
cs_sauna09x (73/100)
de_aztec (74/100)
de_dust (82/100)
de_dust2 (96/100)
de_dust2_long (75/100)
de_dust2x2 (80/100)
de_dust2x2_laskurid (81/100)
de_inferno (93/100)
de_mirage (90/100)
de_nuke (92/100)
de_train (93/100)
de_tuscan (91/100)
de_westwood (91/100)


Enda mapide lisamine:
○ Ava mapirating.sma ning tekita eesolevate ridade põhjal enda valitud mapi funktsioon. Näide:

Seejärel salvesta .sma ning compile'i plugin enda arvutis (vajab colorchat.inc faili).
NB! Veendu, et sa muudad ka if(equali(map, "mapinimi")) rida, ainult sõnumi muutmisest ei piisa.

Lisainformatsioon:
Plugin on kirjutatud võimalikult lihtsalt, ma ei soovinud hankida väärtusi mingist .ini või .txt failist. Selle tõttu on pluginal ka üsna palju korduvaid ridu, mille vähendamine ei olnud mõistlik, sest mappide reitingud ja autorid erinevad ning see tekitaks suurt lisatööd plugina haldamisel.
Väga aeglase ühenduse korral ei pruugi mängija informatsiooni näha (viivitus on 5 sekundit).

DOWNLOAD:
Attachments
mapirating.zip You don't have permission to download attachments.(8 Kb) Downloaded 17 times


avatar
kasutajaolen
Algaja
Postitusi : 2
Maine : 0
Liitus : 02/04/2015
Vaata kasutaja profiili

Postitaminekasutajaolen on 02.04.15 16:40

kui midagi teha, siis võik ikka selle korralikult teha imo

soors:
Kood:
#include <amxmodx>
#include <amxmisc>
#include <colorchat>

#define DATAFILE "ratings.txt"
#pragma semicolon 1

new g_szmapname[32], g_szauthor[32];
new g_irating

public plugin_init( )
{
   register_plugin("Mapi reiting" , "1.0.0" , "you're doing it wrong");
   register_dictionary("ratings.txt");
   
   new szdatadir[48], szdatafile[64];
   get_datadir(szdatafile, charsmax(szdatafile));
   get_mapname(g_szmapname, charsmax(g_szmapname));
   
   add(g_szmapname, charsmax(g_szmapname)," ");
   formatex(szdatafile, charsmax(szdatafile), "%s/%s", szdatadir, DATAFILE);
   
   new filehandle = fopen(szdatafile, "rt");
   new szread[70];
   while (!feof(filehandle))
   {
      fgets(filehandle, szread, charsmax(szread));
      if (equali(g_szmapname, szread, strlen(g_szmapname)))
      {
         new szrating[4];
         /*
         File format & example:
         
         Mapname Rating Author
         de_aztec 74 "Chris Auty (Barney)"
         */
         parse(szread, g_szmapname, charsmax(szmapname), szrating, charsmax(szrating), g_szauthor, charsmax(g_szauthor));
         g_irating = str_to_num(szrating);
         break;
      }
   }
   fclose(filehandle);
}

public client_putinserver(id)
{
   set_task(5.0, "Info", id);
}

public Info(id)
{
   if (g_irating)
   {
      ColorChat(id, NORMAL, "%L", id, "RATING", g_szmapname, g_irating);
      ColorChat(id, NORMAL, "%L", id, "AUTHOR", g_szauthor);
   }
   else
   {
      ColorChat(id, NORMAL, "%L", id, "NOTFOUND");
   }
}

addons/amxmodx/data/ratings.txt
Kood:

de_dust2 96 DaveJ
de_aztec 74 "Chris Auty (Barney)"
täitke ise edasi vms

addons/amxmodx/data/lang/ratings.txt
Kood:

[en]
RATING = ^4*^1 Current map:^4 %s^1. Rating %i/100!
AUTHOR = ^4*^1 Maps author:^4 %s
NOTFOUND = This map has no rating!
[ee]
RATING = ^4*^1 Praegune map:^4 %s^1. Mapi reiting on %i/100!
AUTHOR = ^4*^1 Mapi autor:^4 %s
NOTFOUND = Selle mapi reiting puudub!

pole küll testinud, kuid teoorias peaks töötama :D
avatar
Tonight


Postitusi : 13724
Maine : 2396
Liitus : 19/02/2012
Vaata kasutaja profiili

PostitamineTonight on 02.04.15 18:34

new g_irating -> new g_irating;
szmapname -> g_szmapname

Kuidas see sul töötama peaks? :D Funktsioon ei vii ju failist mappi omavahel kokku, kuvab alati else väärtust (NOTFOUND).
Kui üritad midagi edasi arendada, siis palun ära pane Google abil mingit x-pluginat kokku. Su idee on küll hea, kuid näen sellel meetodil eeliseid vaid juhul, kui mappe on palju.


avatar
xPaw

Postitusi : 36
Maine : 7
Liitus : 12/12/2014
Vaata kasutaja profiili

PostitaminexPaw on 02.04.15 18:45

Tonighti oma on küll halvasti kirjutatud, aga kasutajaolen, su oma on ju veel halvemini. Charsmax vead, txt fail on valesti tehtud, kirjavead. Tonight oleks võinud kasutada if asemel edaspidi else if'i, muidu on plugin korralik. Vaielda annab ka -1 hardcode'imise üle.
avatar
kasutajaolen
Algaja
Postitusi : 2
Maine : 0
Liitus : 02/04/2015
Vaata kasutaja profiili

Postitaminekasutajaolen on 03.04.15 11:55

vead on ja sees kuna ma põlve otsas nikerdasin selle kiirelt kokku, kuid kui need ära parandada oleks plugin kõvasti kasutajasõbralikum

suht tobe on ju mingi 20 erineva mapi read hardcodeda ja siis veel kasutajal soovitada ridasi juurde lisada kui muid mappe tahavad kasutada.


Kood:
#include <amxmodx>
#include <amxmisc>
#include <colorchat>

#define DATAFILE "ratings.txt"
#pragma semicolon 1

new g_szmapname[32], g_szauthor[32];
new g_irating;

public plugin_init( )
{
   register_plugin("Mapi reiting" , "1.0.0" , "you're doing it wrong");
   register_dictionary("ratings.txt");
   
   new szdatadir[48], szdatafile[64];
   get_datadir(szdatadir, charsmax(szdatadir));
   get_mapname(g_szmapname, charsmax(g_szmapname));
   
   add(g_szmapname, charsmax(g_szmapname)," ");
   formatex(szdatafile, charsmax(szdatafile), "%s/%s", szdatadir, DATAFILE);
   
   new filehandle = fopen(szdatafile, "rt");
   new szread[70];
   while (!feof(filehandle))
   {
      fgets(filehandle, szread, charsmax(szread));
      if (equali(g_szmapname, szread, strlen(g_szmapname)))
      {
         new szrating[4];
         /*
         File format & example:
         
         Mapname Rating Author
         de_aztec 74 "Chris Auty (Barney)"
         */
         parse(szread, g_szmapname, charsmax(g_szmapname), szrating, charsmax(szrating), g_szauthor, charsmax(g_szauthor));
         g_irating = str_to_num(szrating);
         break;
      }
   }
   fclose(filehandle);
}

public client_putinserver(id) {
   set_task(5.0, "Info", id);
}

public Info(id) {
   if (g_irating)
   {
      ColorChat(id, NORMAL, "%L", id, "RATING", g_szmapname, g_irating);
      ColorChat(id, NORMAL, "%L", id, "AUTHOR", g_szauthor);
   }
   else
   {
      ColorChat(id, NORMAL, "%L", id, "NOTFOUND");
   }
}

Vaata eelmist teemat Vaata järgmist teemat Tagasi üles

Postitada saavad ainult liitunud kasutajad

Vastamiseks tee endale kasutaja või logi sisse.

Liitu foorumiga

Tee endale kasutaja ning osale aruteludes.


Tee uus kasutaja

Logi sisse

Omad foorumis juba kasutajat? Logi sisse.


Logi sisse

 
Permissions in this forum:
Sa ei saa vastata siinsetele teemadele