anpera.net
https://anpera.dyndns.org/phpbb3/

mal 2 Funktionen von Silienta posten mag
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=43&t=2366
Seite 1 von 2

Autor:  Rikkarda [ Do 16 Mär, 2006 13:57 ]
Betreff des Beitrags:  mal 2 Funktionen von Silienta posten mag

Die Funktionen in der Einbauanleitung /ms können abweichen, falls ihr nicht die Landschaftsemotes von Eliwood (normal /X bei mir /em) eingebaut habt, oder auch die Vordefinierten Farben von Chaosmaker (Profileinstellung) nutzt.


Die Funktion /ms ist eigentlich hauptsächlich "geeignet" für Rollenspielserver, und entstanden aus einem Userwunsch. Das beginnen eines Kommentars mit /ms text fügt am Ende des Nicks ein s (in Nickfarbe natürlich) an, ist ein s der letzte Buchstabe des Namens, ein ' . Ausserdem setzt es den Kommentar anschliessend in der im Profil eingestellten Emotefarbe fort.

Beispiel: /ms Umhang weht
Anzeige: Göttin Rikkardas Umhang weht

Beispiel2: /ms Umhang weht
Anzeige: Feuerspucker Sandros' Umhang weht


so nun mal zum Einbau ;)

common.php

beachtet bitte, /em mit dem Kürzel zu ersetzen, welches IHR für die Landschaftsemotes von Eliwood nutzt

suche: $this->bbcode_second_pass_code('', 'if (substr($commentary,0,1)!=":" &&
substr($commentary,0,2)!="::" &&
substr($commentary,0,3)!="/me" &&
substr($commentary,0,3)!="/em" &&
$session['user']['drunkenness']>0) {')

ersetze mit:

$this->bbcode_second_pass_code('', 'if (substr($commentary,0,1)!=":" &&
substr($commentary,0,2)!="::" &&
substr($commentary,0,3)!="/me" &&
substr($commentary,0,3)!="/ms" &&
substr($commentary,0,3)!="/em" &&
$session['user']['drunkenness']>0) {')

suche:

$this->bbcode_second_pass_code('', '//begin colorhack by chaosmaker 1 of 1//
if (substr($commentary,0,1)==':' || substr($commentary,0,3)=='/me') {
if (substr($commentary,0,3)=='/me') $strpos = 3;
elseif (substr($commentary,0,2)=='::') $strpos = 2;
else $strpos = 1;
if ($session['user']['prefs']['commentemotecolor']) $commentary = substr($commentary,0,$strpos).$session['user']['prefs']['commentemotecolor'].substr($commentary,$strpos);
}
else {
if ($session['user']['prefs']['commenttalkcolor']) $commentary = $session['user']['prefs']['commenttalkcolor'].$commentary;
}
//end colorhack by chaosmaker 1 of 1//')

ersetze mit:

$this->bbcode_second_pass_code('', '//begin colorhack by chaosmaker 1 of 1//
if (substr($commentary,0,1)==':' || substr($commentary,0,3)=='/me'||substr($commentary,0,3)=='/ms') {
if (substr($commentary,0,3)=='/me') $strpos = 3;
elseif (substr($commentary,0,3)=='/ms') $strpos = 3;
elseif (substr($commentary,0,2)=='::') $strpos = 2;
else $strpos = 1;
if ($session['user']['prefs']['commentemotecolor']) $commentary = substr($commentary,0,$strpos).$session['user']['prefs']['commentemotecolor'].substr($commentary,$strpos);
}
else {
if ($session['user']['prefs']['commenttalkcolor']) $commentary = $session['user']['prefs']['commenttalkcolor'].$commentary;
}
//end colorhack by chaosmaker 1 of 1//')

suche:

$this->bbcode_second_pass_code('', 'if ($talkline!="sagt" // do an emote if the area has a custom talkline and the user isn't trying to emote already.
&& substr($commentary,0,1)!=":"
&& substr($commentary,0,2)!="::"
&& substr($commentary,0,3)!="/em"
&& substr($commentary,0,3)!="/me")
$commentary = ":`3$talkline: \\\"`#$commentary`3\\\"";')

ersetze mit:

$this->bbcode_second_pass_code('', 'if ($talkline!="sagt" // do an emote if the area has a custom talkline and the user isn't trying to emote already.
&& substr($commentary,0,1)!=":"
&& substr($commentary,0,2)!="::"
&& substr($commentary,0,3)!="/em"
&& substr($commentary,0,3)!="/ms"
&& substr($commentary,0,3)!="/me")
$commentary = ":`3$talkline: \\\"`#$commentary`3\\\"";')


suche:

$this->bbcode_second_pass_code('', 'Landschafts-Emote by Eliwood
*/
if ($ft=="/em")
{
$x = strpos($row[comment],$ft);
if ($x!==false)
{
if ($linkbios)
$op[$i] = str_replace("&","&",HTMLEntities(substr($row[comment],0,$x)))
."`0\n`& "
.str_replace("&","&",HTMLEntities(substr($row[comment],$x+strlen($ft))))
."`0`n";
else
$op[$i] = str_replace("&","&",HTMLEntities(substr($row[comment],0,$x)))
."`0\n`& "
.str_replace("&","&",HTMLEntities(substr($row[comment],$x+strlen($ft))))
."`0`n";
}
}
/*Landschaft-Emote Ende*/')

füge danach ein:

dieser Part muss angepasst werden, mit Euren Bedürfnissen. Das ist eigentlich relativ einfach. Kopiert aus eurer viewcommentary, den Teil ab:

$this->bbcode_second_pass_code('', ' if ($x!==false){
if ($linkbios)
.
.
.
}
}
')

unter der /me funktion raus, welche so beginnt:

$this->bbcode_second_pass_code('', 'elseif ($ft=="::" || $ft=="/me" || $ft==":"){
$x = strpos($row[comment],$ft);')

und ersetzt meinen Teil damit, da ich es auch inkl. Gilden etc habe :)

$this->bbcode_second_pass_code('', '*beginn ms-rp Emote by Rikkarda@silienta-logd.de for www.silienta-logd.de*/
elseif ($ft=="/ms"){
$name = str_replace("`0","",$row['name']);
$namestrlen = strlen($name);
$lastchar = $name{$namestrlen-1};
$name = $name.($lastchar == "s" || $lastchar == "x"?"'`0":"s`0");

$x = strpos($row[comment],$ft);
if ($x!==false){
if ($linkbios)
$op[$i] = str_replace("&","&",HTMLEntities(substr($row[comment],0,$x)))
.$guildpre
."`0<a href='$link' style='text-decoration: none' >\n<span onMouseOver=\"return escape('".HTMLEntities($string)."')\">`&$name`0</span></a>\n`& "
.$guildsuf
.str_replace("&amp;","&",HTMLEntities(substr($row[comment],$x+strlen($ft))))
."`0`n";
else
$op[$i] = str_replace("&amp;","&",HTMLEntities(substr($row[comment],0,$x)))
.$guildpre
."`0\n<span onMouseOver=\"return escape('".HTMLEntities($string)."')\">`&$name`0</span>\n`& "
.$guildsuf
.str_replace("&amp;","&",HTMLEntities(substr($row[comment],$x+strlen($ft))))
."`0`n";
}
}
/*rp-ms Emote-End*/')

so das wars :)


2. ist eine Funktion, damit sich die Charaktere beim Anmelden, selbst wenn sie mit a beginnen gleich als A darstellen *schmunzel* es ist einfach schöner, wenn ein Char zb. Abraham und nicht abraham heisst ;)

der login funktioniert aber natürlich weiterhin auch mit abraham. Nur wird der Charakter eben automatisch zu Abraham :)

so dann mal los:

common.php

füge an beliebiger Stelle zwischen den Functionen ein:

$this->bbcode_second_pass_code('', '
//Rikkarda@silienta-logd.de für Silienta, damit der erste Buchstabe immer gross wird
//gefunden im php handbuch *fg* umgeschrieben auf die create.php
function FormatName($shortname=NULL) {

/* Formats a first or last name, and returns the formatted
version */

if (empty($shortname))
return false;

// Initially set the string to lower, to work on it
$shortname = strtolower($shortname);

// Run through and uppercase any multi-barrelled names

$names_array = explode('-',$shortname);

for ($i = 0; $i < count($names_array); $i++) {

// "McDonald", "O'Conner"..
if (strncmp($names_array[$i],'mc',2) == 0 || ereg('^[oO]\'[a-zA-Z]',$names_array[$i])) {
$names_array[$i][2] = strtoupper($names_array[$i][2]);

}

// Always set the first letter to uppercase, no matter what
$names_array[$i] = ucfirst($names_array[$i]);

}

// Piece the names back together
$shortname = implode('-',$names_array);

// Return upper-casing on all missed (but required) elements of the $name var
return ucwords($shortname);

}
//end by Rikkarda for www.silienta-logd.de')

öffne create.php

suche:

$this->bbcode_second_pass_code('', '$sql = "INSERT INTO accounts
(name,
title,
password,
sex,
login,
laston,
uniqueid,
lastip,
superuser,
gold,
emailaddress,
emailvalidation,
referer
) VALUES (
'$title $shortname',
'$title',
'$HTTP_POST_VARS[pass1]',
'$HTTP_POST_VARS[sex]',
'$shortname',
'".date("Y-m-d H:i:s",strtotime("-1 day"))."',
'$_COOKIE[lgi]',
'".$_SERVER['REMOTE_ADDR']."',
".getsetting("superuser",0).",
".getsetting("newplayerstartgold",50).",
'$_POST[email]',
'$emailverification',
'$referer'
)";
db_query($sql) or die(db_error(LINK));
if (db_affected_rows(LINK)<=0){
output("`\$Fehler`^: Dein Account konnte aus unbekannten Gründen nicht erstellt werden. Versuchs bitte einfach nochmal. ");')

füge DAVOR ein:

$this->bbcode_second_pass_code('', '$shortname=FormatName($shortname);')



also in silienta läuft beides Einwandfrei und ich hoffe auch hier gibt es welche, die das nutzen können :)

lg Rikka

Autor:  Devilzimti [ Do 16 Mär, 2006 14:42 ]
Betreff des Beitrags: 

kannste für nen von medizin leicht beschwipsten Schüler nochmal erkären, was /ms nun macht? ôo
das gleiche wie /me oda was ^^

Autor:  Rikkarda [ Do 16 Mär, 2006 15:14 ]
Betreff des Beitrags: 

*lach*

eigentlich sollte die Erklärung doch ausreichend sein ;)

naja

/me macht so

Anzeige: Göttin Rikkarda macht so

/ms macht so

Anzeige: Göttin Rikkardas macht so


das s wird in Nickfarbe angehangen, und danach mit Emotefarbe weitergeschrieben.. ist der letzte Buchstabe am Nick ein s wird KEIN s sondern ein ' angehangen ;)

damit braucht man dann nicht /me `s Augen leuchten
sondern schreibt einfach /ms Augen leuchten
:)

lg Rikka

Autor:  Devilzimti [ Do 16 Mär, 2006 15:54 ]
Betreff des Beitrags: 

Hmm aso ^^
Dafür is es aba sau viel Code? :D

Autor:  Rikkarda [ Do 16 Mär, 2006 16:31 ]
Betreff des Beitrags: 

ach geht doch *fg* und meine Bewohner sind mir das auch wert ;)

lg

Autor:  Arîzto [ Do 16 Mär, 2006 22:05 ]
Betreff des Beitrags: 

Und es hat sich gelohnt!
Nicht nur die Funktion für's bessere RP, auch die für's Registrieren gefällt mir sehr gut! (bin klein geschriebene namen leid, sieht doch blöde aus, wenn immer allet kleen geschrieben wird, oder? klein klein klein klein klein :pein: )

Autor:  Kevz [ Fr 17 Mär, 2006 11:54 ]
Betreff des Beitrags: 

Trotzdem ist es viel zu viel Codeschnipsel.

Autor:  Arîzto [ Fr 17 Mär, 2006 17:25 ]
Betreff des Beitrags: 

@Kevz Du hast noch 26 Posts um den Code zu optimieren ;) *eg*

Autor:  Kevz [ Fr 17 Mär, 2006 17:59 ]
Betreff des Beitrags: 

Arîzto hat geschrieben:
@Kevz Du hast noch 26 Posts um den Code zu optimieren ;) *eg*

-Werd drauf zurückommen den letzten Post werd ich am "06 Sep 2006" machen.

Autor:  Rikkarda [ Fr 17 Mär, 2006 18:37 ]
Betreff des Beitrags: 

Kevz hat geschrieben:
Arîzto hat geschrieben:
@Kevz Du hast noch 26 Posts um den Code zu optimieren ;) *eg*

-Werd drauf zurückommen den letzten Post werd ich am "06 Sep 2004" machen.



dann winke ;) *schmunzel* und klar mach weniger geschnipsel raus, mir war es egal, da mir das resultat wichtiger als die arbeit war :)

lg

Autor:  Arîzto [ Fr 17 Mär, 2006 21:19 ]
Betreff des Beitrags: 

Kevz hat geschrieben:
-Werd drauf zurückommen den letzten Post werd ich am "06 Sep 2004" machen.


[Offtopic]Am 06.09.'06? Gibt's da irgendwas besonderes? (Du brauchst 'n halbes Jahr für die paar Posts? xD) Nja, genau 2 Jahre für genau 2000 Posts... :lol: Perfektionist [/Offtopic]

Autor:  Kevz [ Fr 17 Mär, 2006 21:55 ]
Betreff des Beitrags: 

Jo. War nicht wirkllich so Aktiv. Aber ich habe mich mit den Beiträgen hier über Wasser gehalten und 2000 Posts bekommt man nicht auf die schnelle wenn man hier nichts bzw. kaum etwas veröffentlicht oder Sonstige aufstände hier anzettelt ;)

Autor:  Amerilion [ Sa 18 Mär, 2006 12:47 ]
Betreff des Beitrags: 

Die 2te Funktion find ich genial *g*
Fehlt nur noch n Hack der alle Anfangsbuchstaben die schon klein sind eben mal großmacht, hab keine Lust es alles manuell zu ändern ;)

2000 Einträge in 2 Jahren, allerdings sollte man mal die Spammposts abzählen ;)
(nicht ernst nehmen ;) )

Autor:  Kevz [ Sa 18 Mär, 2006 12:54 ]
Betreff des Beitrags: 

Neee ohne abziehen*g*
Ist / war hartes Training alles hier voll zu spammen*sfg* Würde man die Spammposts abziehen, wäre das ganze Anp Forum leer..

Autor:  Rikkarda [ Sa 18 Mär, 2006 13:46 ]
Betreff des Beitrags: 

Amerilion hat geschrieben:
Die 2te Funktion find ich genial *g*
Fehlt nur noch n Hack der alle Anfangsbuchstaben die schon klein sind eben mal großmacht, hab keine Lust es alles manuell zu ändern ;)

2000 Einträge in 2 Jahren, allerdings sollte man mal die Spammposts abzählen ;)
(nicht ernst nehmen ;) )


hm ja ich habs manuell gemacht, waren net so arg viele, aber ich schreibs mir mal auf ;)

lg

Autor:  Drazaar [ Di 04 Apr, 2006 21:58 ]
Betreff des Beitrags: 

Juhu nach der Funktion haben einige meiner User schon geschriehen :)
Danke Rikka :)

Autor:  Rikkarda [ Di 04 Apr, 2006 23:24 ]
Betreff des Beitrags: 

fein :) freut mich, wenn auch andere daran nutzen ziehen :)

lg

Autor:  -DoM [ Mo 05 Jun, 2006 13:38 ]
Betreff des Beitrags:  Re: mal 2 Funktionen von Silienta posten mag

Rikkarda hat geschrieben:
2. ist eine Funktion, damit sich die Charaktere beim Anmelden, selbst wenn sie mit a beginnen gleich als A darstellen *schmunzel* es ist einfach schöner, wenn ein Char zb. Abraham und nicht abraham heisst ;)

der login funktioniert aber natürlich weiterhin auch mit abraham. Nur wird der Charakter eben automatisch zu Abraham :)

so dann mal los:

common.php

füge an beliebiger Stelle zwischen den Functionen ein:

$this->bbcode_second_pass_code('', '
//Rikkarda@silienta-logd.de für Silienta, damit der erste Buchstabe immer gross wird
//gefunden im php handbuch *fg* umgeschrieben auf die create.php
function FormatName($shortname=NULL) {

/* Formats a first or last name, and returns the formatted
version */

if (empty($shortname))
return false;

// Initially set the string to lower, to work on it
$shortname = strtolower($shortname);

// Run through and uppercase any multi-barrelled names

$names_array = explode('-',$shortname);

for ($i = 0; $i < count($names_array); $i++) {

// "McDonald", "O'Conner"..
if (strncmp($names_array[$i],'mc',2) == 0 || ereg('^[oO]\'[a-zA-Z]',$names_array[$i])) {
$names_array[$i][2] = strtoupper($names_array[$i][2]);

}

// Always set the first letter to uppercase, no matter what
$names_array[$i] = ucfirst($names_array[$i]);

}

// Piece the names back together
$shortname = implode('-',$names_array);

// Return upper-casing on all missed (but required) elements of the $name var
return ucwords($shortname);

}
//end by Rikkarda for www.silienta-logd.de')

öffne create.php

suche:

$this->bbcode_second_pass_code('', '$sql = "INSERT INTO accounts
(name,
title,
password,
sex,
login,
laston,
uniqueid,
lastip,
superuser,
gold,
emailaddress,
emailvalidation,
referer
) VALUES (
'$title $shortname',
'$title',
'$HTTP_POST_VARS[pass1]',
'$HTTP_POST_VARS[sex]',
'$shortname',
'".date("Y-m-d H:i:s",strtotime("-1 day"))."',
'$_COOKIE[lgi]',
'".$_SERVER['REMOTE_ADDR']."',
".getsetting("superuser",0).",
".getsetting("newplayerstartgold",50).",
'$_POST[email]',
'$emailverification',
'$referer'
)";
db_query($sql) or die(db_error(LINK));
if (db_affected_rows(LINK)<=0){
output("`\$Fehler`^: Dein Account konnte aus unbekannten Gründen nicht erstellt werden. Versuchs bitte einfach nochmal. ");')

füge DAVOR ein:

$this->bbcode_second_pass_code('', '$shortname=FormatName($shortname);')



also in silienta läuft beides Einwandfrei und ich hoffe auch hier gibt es welche, die das nutzen können :)

lg Rikka


Mich mal wieder zu wort melde:
Anstatt dem ganzem einfach dieses hier:
SUCHE IN CREATE.PHP:
[php]$sql = "INSERT INTO accounts
(name,
title,
password,
sex,
login,
laston,
uniqueid,
lastip,
superuser,
gold,
emailaddress,
emailvalidation,
referer
) VALUES (
'$title $shortname',
'$title',
'$HTTP_POST_VARS[pass1]',
'$HTTP_POST_VARS[sex]',
'$shortname',
'".date("Y-m-d H:i:s",strtotime("-1 day"))."',
'$_COOKIE[lgi]',
'".$_SERVER['REMOTE_ADDR']."',
".getsetting("superuser",0).",
".getsetting("newplayerstartgold",50).",
'$_POST[email]',
'$emailverification',
'$referer'
)";
db_query($sql) or die(db_error(LINK));
if (db_affected_rows(LINK)<=0){
output("`\$Fehler`^: Dein Account konnte aus unbekannten Gründen nicht erstellt werden. Versuchs bitte einfach nochmal. ");[/php]
FÜGE DAVOR EIN:
[php]$shortname = ucfirst(strtolower($shortname));[/php]
Speichern und Hochladen. Das ganze funktioniert ab PHP3

Das wars. keine Funktion in der common.php nötig einfach die eine Zeile für den SQL-Befehl. Das ganze ist auch noch wesentlich Ressourcenfreundlicher. Es werd auch nur "GROSSSCHRIFT" in "Grossschrift" geandelt.

Autor:  Eliwood [ Mo 05 Jun, 2006 14:08 ]
Betreff des Beitrags:  Re: mal 2 Funktionen von Silienta posten mag

*Klugscheiss*

Und ucwords() anstalle von ucfirst() um den ersten Buchstaben jedes Wortes umwandeln zu können ;)

Autor:  -DoM [ Mo 05 Jun, 2006 14:50 ]
Betreff des Beitrags: 

gut bei mir nicht nötig da ich keine leerzeichen im login zulasse....., aber auch diese funktion kenn...:*fg*

[klugscheiss]
aber wenn ich mir die arbeistweise anschaue, sollte man im falle des loginnamens immer der funktion ucfirst() den vorzug geben, da diese nicht nach einem Whitespace (Leerzeichen, Seitenvorschub, Zeilenvorschub, Wagenrücklauf sowie horizontalem und vertikalem Tabulatorzeichen) sucht, wie die funktion ucwords().
[/klugscheiss]

Seite 1 von 2 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/