elitepvpers

elitepvpers (https://www.elitepvpers.com/forum/)
-   Last Chaos (https://www.elitepvpers.com/forum/last-chaos/)
-   -   Last Chaos Server for dummies Projekt (https://www.elitepvpers.com/forum/last-chaos/3669754-last-chaos-server-dummies-projekt.html)

EEOI 04/07/2015 12:22

Last Chaos Server for dummies Projekt
 
Moin,
ich komme direkt zum Punkt.
Ich schreibe derzeit eine zukünftige PDF namens last Chaos Server for dummies.
Ich suche daher einige Leute die Lust haben das am Ende ins englische zu übersetzten und/oder drüber schauen und Anregungen mir geben.
Das Projekt werde ich sobald bissl was zusammen geschrieben ist hier in einem separaten thread anbieten(kostenfrei).
Desweiteren Suche ich noch weitere Punkte die behandelt werden sollten.
Derzeit in Planung/Arbeit:
Aufsetzen eines Servers mit lamp
Logs
Datenbank
Fehler und Meldungen
SE (Verlinkung auf taris pdf)
editieren und hinzufügen von Content
Marketing

Gruß,
Peter

damona 04/07/2015 12:41

Quote:

Originally Posted by EEOI (Post 31550516)
Moin,
ich komme direkt zum Punkt.
Ich schreibe derzeit eine zukünftige PDF namens last Chaos Server for dummies.
Ich suche daher einige Leute die Lust haben das am Ende ins englische zu übersetzten und/oder drüber schauen und Anregungen mir geben.
Das Projekt werde ich sobald bissl was zusammen geschrieben ist hier in einem separaten thread anbieten(kostenfrei).
Desweiteren Suche ich noch weitere Punkte die behandelt werden sollten.
Derzeit in Planung/Arbeit:
Aufsetzen eines Servers mit lamp
Logs
Datenbank
Fehler und Meldungen
SE (Verlinkung auf taris pdf)
editieren und hinzufügen von Content
Marketing

Gruß,
Peter


wenn die leute es nicht mal mit tut und sogar video schaffen wird das hier auch nichts :)
Besser du machst ein pdf für fortgeschrittene ^^

EEOI 04/07/2015 16:24

Fortgeschrittene?
Für mich sind das Leute die bei Problemen googlen und selbst ein Server aufsetzten können sowie editieren.
Was soll man dieser Fraktion beibringen bzw. wie helfen?

Tarissuis 04/07/2015 16:31

Ein englisches Tut für den Serious Editor fehlt tatsächlich noch, falls jemand reelles Interesse daran hat, ein solches zu verfassen, wäre ich im Gegenzug bereit, die deutsche Version im word format + image ressoucen zur Verfügung zu stellen.
Allerdings müsste dieses stark überarbeitet werden, der Inhalt ist teils lückenhaft und teils leider auch schlicht falsch.

damona 04/07/2015 16:37

Quote:

Originally Posted by EEOI (Post 31552796)
Fortgeschrittene?
Für mich sind das Leute die bei Problemen googlen und selbst ein Server aufsetzten können sowie editieren.
Was soll man dieser Fraktion beibringen bzw. wie helfen?

von deinen "fortgeschrittenen" die du meinst haben auch sehr viele diverse probleme. bekomme ja nicht umsonst jeden tag ein gespamme :O

unter anderem:
cpanel
php-mysqlnd(die meisten wissen ned mal unterschied zwischen mysql und php-mysql)
richtige db connection (sehe jedes mal wieder security fehler auch bei server die 200+ on haben)
sql query's (ja selbst die "fortgeschritten" haben kein plan von)
paypal/superrewards konto eröffnen (traurig aber wahr meistens unfähig)
server logs richtig auslesen um fehler zu ermitteln und zu beheben

die meisten googlen zwar aber einfach nur falsch

anfänger themen wären z.b. noch aufbau einer .lod, aufbau der files/datenbank/client etc.

EEOI 04/07/2015 18:13

Quote:

Originally Posted by damona (Post 31552932)
von deinen "fortgeschrittenen" die du meinst haben auch sehr viele diverse probleme. bekomme ja nicht umsonst jeden tag ein gespamme :O

unter anderem:
cpanel
php-mysqlnd(die meisten wissen ned mal unterschied zwischen mysql und php-mysql)
richtige db connection (sehe jedes mal wieder security fehler auch bei server die 200+ on haben)
sql query's (ja selbst die "fortgeschritten" haben kein plan von)
paypal/superrewards konto eröffnen (traurig aber wahr meistens unfähig)
server logs richtig auslesen um fehler zu ermitteln und zu beheben


die meisten googlen zwar aber einfach nur falsch

anfänger themen wären z.b. noch aufbau einer .lod, aufbau der files/datenbank/client etc.


Das Blaue kann ich nur bestätigen und kann ich aufnehmen, jedoch will ich dem Konzept eines for Dummies treu bleiben und nicht zu sehr in die Tiefe gehen sondern breitflächig ankratzen und wer motiviert ist mehr zu lernen soll dann google nutzen.
Hatte auch schon die lustigsten Anfragen von irgendwelchen Admins mit paar mehr Users drauf ^^.

Das Rote finde ich eher unnötig, keinen interessiert es wie die .lod aufgebaut ist(bis auf die coder und die brauchen kein Büchlein).
Files, Wallets und Client ist auch eine Sache wo man kurz mal drauf verweisen kann oder kurz ansprechen aber näher interessiert es auch keinen. (Was warum wie wer macht als bsp.).

bisko #EGG 04/07/2015 18:16

Mach nen Tool, welches alles selbst macht, so einfach wills jeder haben. xD

EEOI 04/07/2015 18:18

Quote:

Originally Posted by L-kυn (Post 31554052)
Mach nen Tool, welches alles selbst macht, so einfach wills jeder haben. xD

Du wirst lachen aber ein mein erstes php Projekt war ein "tool", was den Server + db einrichtet und einstellt.
Man muss nur die rates eingeben und das Teil ausführen und schon war der Server fertig und man konnte nach dem sl anpassen spielen ^^.

bisko #EGG 04/07/2015 18:35

Quote:

Originally Posted by EEOI (Post 31554072)
Du wirst lachen aber ein mein erstes php Projekt war ein "tool", was den Server + db einrichtet und einstellt.
Man muss nur die rates eingeben und das Teil ausführen und schon war der Server fertig und man konnte nach dem sl anpassen spielen ^^.

Arbeite daran, dann evtl. an die "Dummies" verkaufen. xD

EEOI 04/07/2015 18:37

Quote:

Originally Posted by L-kυn (Post 31554328)
Arbeite daran, dann evtl. an die "Dummies" verkaufen. xD

Es soll Menschen geben, dennen Geld egal ist.
(PS:Das Tool ist fertig da muss nichts mehr drann gearbeitet werden, rest wäre "Facelifting")

bisko #EGG 04/07/2015 19:02

Quote:

Originally Posted by EEOI (Post 31554369)
Es soll Menschen geben, dennen Geld egal ist.
(PS:Das Tool ist fertig da muss nichts mehr drann gearbeitet werden, rest wäre "Facelifting")

Dann schenks her, meistens wollen die Leute irgendetwas für deren Tools, da sie so viel Zeit investiert haben und bla bla bla...
:P

EEOI 04/07/2015 19:05

Quote:

Originally Posted by L-kυn (Post 31554685)
Dann schenks her, meistens wollen die Leute irgendetwas für deren Tools, da sie so viel Zeit investiert haben und bla bla bla...
:P

Okey hier die erste Version die ich davon mal geschrieben hatte (Rates sind da noch nicht drinn im Auto. nur einrichten Files+db+configs)
Spoiler:

die Include.php
PHP Code:

<?php

$mysqlip 
'localhost';
$mysqluser 'root';
$mysqlpassword '';
$database_data 'newproject_data';
$database_auth 'newproject_db_auth';
$database_user 'newproject_db_user';
$database_db 'newproject_db';
$database_post 'newproject_post';
$database_data_sql 'newproject_data.sql';
$database_auth_sql 'newproject_db_auth.sql';
$database_user_sql 'newproject_db_user.sql';
$database_db_sql 'newproject_db.sql';
$database_post_sql 'newproject_post.sql';
$ep2_us false;
$ep2_ger false;
#$ep3 = $_POST["ep3_datenbank"];
$wait_ep2_ger false;
$wait_ep2_us false;
$Done false;


#Don't edit below!#


$exp_inc '';
$exp_dec '';
$sp_inc '';
$sp_dec '';
$price_inc '';
$price_dec '';
$drop_inc '';
$drop_dec '';
$aff_inc '';
$aff_dec '';
$hs_add '';




$log_gs_1 '';
$tmp '';



    
### EXPERIENCE ###    
    
#Exp inc
if ($exp_inc == true)
{
$exp_query "UPDATE t_exp SET a_exp = a_exp / $exp_inc";
$exp_ergebnis mysql_query($exp_query);
if (
$exp_ergebnis == true)
{
    echo 
"Done";
}
}

if (
$exp_dec == true)
{
#Exp dec
$exp_query "UPDATE t_exp SET a_exp = a_exp * $exp_dec";
$exp_ergebnis mysql_query($exp_query);
if (
$exp_ergebnis == true)
{
    echo 
"Done";
}

### SKILLPOINT ###

}
#Sp inc
if ($sp_inc == true)
{
$sp_query "UPDATE t_npc SET a_skill_point = a_skill_point * $sp_inc";
$sp_ergebnis mysql_query($sp_query);
if (
$sp_ergebnis == true)
{
    echo 
"Done";
}
}

if (
$sp_dec == true)
{
#Sp dec
$sp_query "UPDATE t_npc SET a_skill_point = a_skill_point / $sp_dec";
$sp_ergebnis mysql_query($sp_query);
if (
$sp_ergebnis == true)
{
    echo 
"Done";
}
}

### PRICE ###

#Price inc
if ($price_inc == true)
{
$price_query "UPDATE t_npc SET a_prize = a_prize * $price_inc";
$price_ergebnis mysql_query($price_query);
if (
$price_ergebnis == true)
{
    echo 
"Done";
}
}

if (
$price_dec == true)
{
#Price dec
$price_query "UPDATE t_npc SET a_prize = a_prize / $price_dec";
$price_ergebnis mysql_query($price_query);
if (
$price_ergebnis == true)
{
    echo 
"Done";
}
}

### DROP ###

#Drop inc
if ($drop_inc == true)
{
$drop_query "
UPDATE t_npc SET a_item_percent_0 = a_item_percent_0 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_1 = a_item_percent_1 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_2 = a_item_percent_2 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_3 = a_item_percent_3 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_4 = a_item_percent_4 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_5 = a_item_percent_5 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_6 = a_item_percent_6 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_7 = a_item_percent_7 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_8 = a_item_percent_8 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_9 = a_item_percent_9 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_10 = a_item_percent_10 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_11 = a_item_percent_11 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_12 = a_item_percent_12 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_13 = a_item_percent_13 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_14 = a_item_percent_14 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_15 = a_item_percent_15 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_16 = a_item_percent_16 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_17 = a_item_percent_17 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_18 = a_item_percent_18 * 
$drop_inc;
UPDATE t_npc SET a_item_percent_19 = a_item_percent_19 * 
$drop_inc;";
$drop_ergebnis mysql_query($drop_query);
if (
$drop_ergebnis == true)
{
    echo 
"Done";
}
}

if (
$drop_dec == true)
{
#Drop dec
$drop_query "
UPDATE t_npc SET a_item_percent_0 = a_item_percent_0 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_1 = a_item_percent_1 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_2 = a_item_percent_2 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_3 = a_item_percent_3 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_4 = a_item_percent_4 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_5 = a_item_percent_5 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_6 = a_item_percent_6 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_7 = a_item_percent_7 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_8 = a_item_percent_8 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_9 = a_item_percent_9 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_10 = a_item_percent_10 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_11 = a_item_percent_11 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_12 = a_item_percent_12 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_13 = a_item_percent_13 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_14 = a_item_percent_14 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_15 = a_item_percent_15 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_16 = a_item_percent_16 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_17 = a_item_percent_17 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_18 = a_item_percent_18 * 
$drop_dec;
UPDATE t_npc SET a_item_percent_19 = a_item_percent_19 * 
$drop_dec;";
$drop_ergebnis mysql_query($drop_query);
if (
$drop_ergebnis == true)
{
    echo 
"Done";
}
}

### AFFINITY ###

#Affinity inc
if ($aff_inc == true)
{
$aff_query "UPDATE t_affinity_work SET a_value = a_value * $aff_inc;";
$aff_ergebnis mysql_query($aff_query);
if (
$aff_ergebnis == true)
{
    echo 
"Done";
}
}

if (
$aff_dec == true)
{
#Affinity dec
$aff_query "UPDATE t_affinity_work SET a_value = a_value / $aff_dec;";
$aff_ergebnis mysql_query($aff_query);
if (
$aff_ergebnis == true)
{
    echo 
"Done";
}
}

### HS ADD ###
if ($hs_add == true)
{
$hs_query "UPDATE t_npc SET a_item_19 = 85;";
$hs_ergebnis mysql_query($hs_query);
if (
$hs_ergebnis == true)
{
    echo 
"Done";
}
}





?>

die Porno.php
PHP Code:

<?php
$check 
mkdir('/home/Server');

$zip = new ZipArchive;
if (
$zip->open('ep3/Server.zip') === TRUE) {
    
$zip->extractTo('/home/Server');
    
$zip->close();
    echo 
'ok';
    
shell_exec('chmod -R 0777 /home/Server');
} else {
    echo 
'Fehler';
}


include(
"include.php");

$Setup_ip $_SERVER['SERVER_NAME'];

###GameServer newStobm edit###
$lines file ("/home/Server/GameServer/GameServer1/data/newStobm.bin");
#Server#
$lines[3] = "IP=$Setup_ip\n";
#Catalog#
$lines[10] = "DBName=$database_data\n";
$lines[11] = "User=$mysqluser\n";
$lines[12] = "Password=$mysqlpassword\n";
#Post#
$lines[32] = "DBName=$database_post\n";
$lines[33] = "User=$mysqluser\n";
$lines[34] = "Password=$mysqlpassword\n";

$handle fopen ("/home/Server/GameServer/GameServer1/data/newStobm.bin""w");
fwrite($handleimplode('',$lines));
fclose($handle);

###LoginServer newStobm edit###
$lines file ("/home/Server/LoginServer/LoginServer/newStobm.bin");
#Server#
$lines[2] = "IP=$Setup_ip\n";
#User DB#
$lines[8] = "DBName=$database_user\n";
$lines[9] = "User=$mysqluser\n";
$lines[10] = "Password=$mysqlpassword\n";
#Data DB#
$lines[14] = "DBName=$database_data\n";
$lines[15] = "User=$mysqluser\n";
$lines[16] = "Password=$mysqlpassword\n";
#Auth DB#
$lines[20] = "DBName=$database_auth\n";
$lines[21] = "User=$mysqluser\n";
$lines[22] = "Password=$mysqlpassword\n";

$handle fopen ("/home/Server/LoginServer/LoginServer/newStobm.bin""w");
fwrite($handleimplode('',$lines));
fclose($handle);

###Connector newStobm edit###
$lines file ("/home/Server/Connector/Connector/newStobm.bin");
#User DB#
$lines[8] = "DBName=$database_user\n";
$lines[9] = "User=$mysqluser\n";
$lines[10] = "Password=$mysqlpassword\n";
#Auth DB#
$lines[14] = "DBName=$database_auth\n";
$lines[15] = "User=$mysqluser\n";
$lines[16] = "Password=$mysqlpassword\n";
#Event DB#
$lines[20] = "DBName=$database_auth\n";
$lines[21] = "User=$mysqluser\n";
$lines[22] = "Password=$mysqlpassword\n";

$handle fopen ("/home/Server/Connector/Connector/newStobm.bin""w");
fwrite($handleimplode('',$lines));
fclose($handle);

###Helper newStobm edit###
$lines file ("/home/Server/Helper/Helper/newStobm.bin");
#Char DB#
$lines[7] = "DBName=$database_db\n";
$lines[8] = "User=$mysqluser\n";
$lines[9] = "Password=$mysqlpassword\n";

$handle fopen ("/home/Server/Helper/Helper/newStobm.bin""w");
fwrite($handleimplode('',$lines));
fclose($handle);

###SubHelper newStobm edit###
$lines file ("/home/Server/SubHelper/SubHelper/newStobm.bin");
#Char DB#
$lines[9] = "DBName=$database_db\n";
$lines[10] = "User=$mysqluser\n";
$lines[11] = "Password=$mysqlpassword\n";
#Post DB#
$lines[15] = "DBName=$database_post\n";
$lines[16] = "User=$mysqluser\n";
$lines[17] = "Password=$mysqlpassword\n";

$handle fopen ("/home/Server/SubHelper/SubHelper/newStobm.bin""w");
fwrite($handleimplode('',$lines));
fclose($handle);
### ICH BIN DER GEILSTE, PASS MA UF DU MUSST EP3 NOCH RAUS NEHMEN DIGGA###
$ep3 true;

if (
$ep3)
{
$wait_ep3 true;    
}


$verbindung mysql_connect("$mysqlip","$mysqluser","$mysqlpassword"); 
if (!
$verbindung)
{
#    echo "Das war wohl nichts :(";    
}
else
{

### CREATE database_data ###
$connect_data mysql_select_db("$database_data"); 
if(!
$connect_data)
{
    echo 
"Creating $database_data";
$verbindung_data mysql_query("CREATE DATABASE $database_data");
if (!
$verbindung_data)
    {
#        echo "<br>Can't create $database_data";
    
}    
}
else 
{
#    echo "<br>Database $database_data is exist!";
}

### CREATE database_auth ###
$connect_auth mysql_select_db("$database_auth");
if(!
$connect_auth)
{
#    echo "<br>Create $database_auth";
$verbindung_auth mysql_query("CREATE DATABASE $database_auth");
if (!
$verbindung_auth)
    {
#        echo "<br>Can't create $database_auth";
    
}
}
else 
{
#    echo "<br>Database $database_auth is exist!";
}

### CREATE database_user ###
$connect_user mysql_select_db("$database_user");
if(!
$connect_user)
{
#    echo "<br>Create $database_user";
$verbindung_user mysql_query("CREATE DATABASE $database_user") or die("<br>Can't create $database_user");
}
else 
{
#    echo "<br>Database $database_user is exist!";
}

### CREATE database_db ###
$connect_db mysql_select_db("$database_db");
if(!
$connect_db)
{
#    echo "<br>Create $database_db";
$verbindung_db mysql_query("CREATE DATABASE $database_db"); 
    if(!
$verbindung_db)
    {
#    echo "<br>Can't create $database_db";
    
}
}
else 
{
#    echo "<br>Database $database_db is exist!";
}


### CREATE database_post ###
$connect_post mysql_select_db("$database_post");
if(!
$connect_post)
{
    echo (
"<br>Create $database_post");
$verbindung_post mysql_query("CREATE DATABASE $database_post");
    if(!
$verbindung_post)
    {
#            echo "<br>Can't create $database_post";
    
}
}
else 
{
#    echo "<br>Database $database_post is exist!";
}

}    


#    echo "<br> load ep3 database!";
        
$ep3_out_data shell_exec("mysql --user=$mysqluser --password=$mysqlpassword '$database_data' < ep3/'$database_data_sql'");
        
$ep3_out_db shell_exec("mysql --user=$mysqluser --password=$mysqlpassword '$database_db' < ep3/'$database_db_sql'");
        
$ep3_out_auth shell_exec("mysql --user=$mysqluser --password=$mysqlpassword '$database_auth' < ep3/'$database_auth_sql'");
        
$ep3_out_user shell_exec("mysql --user=$mysqluser --password=$mysqlpassword '$database_user' < ep3/'$database_user_sql'");
        
$ep3_out_post shell_exec("mysql --user=$mysqluser --password=$mysqlpassword '$database_post' < ep3/'$database_post_sql'");
        
if (!
$ep3_out_data AND !$ep3_out_db AND !$ep3_out_auth AND !$ep3_out_user AND !$ep3_out_post)
{
    
$wait_ep3 false;

}    


?>


Destroyer105 04/09/2015 02:14

Finde es auch sehr nützlich und bin ziemlich interessiert an der Anleitung, da ich schon sämtliche Videos durchgegangen bin aber alle von 2010/2011 waren, die dateien demnach veraltet und es eben mehr wissen als nur noch ausprobieren braucht, was ich so schnell noch nicht auf die Reihe kriege, auch wenn ich mich in Informatik ausbilden will.

wurstbrot123 04/10/2015 10:21

Quote:

Originally Posted by EEOI (Post 31554369)
Es soll Menschen geben, dennen Geld egal ist.
(PS:Das Tool ist fertig da muss nichts mehr drann gearbeitet werden, rest wäre "Facelifting")

Nett sowas einfach nur für die Anfänger zu machen :)

Ih¢sãs123 04/10/2015 15:00

Quote:

Originally Posted by damona (Post 31552932)
von deinen "fortgeschrittenen" die du meinst haben auch sehr viele diverse probleme. bekomme ja nicht umsonst jeden tag ein gespamme :O

unter anderem:
cpanel
php-mysqlnd(die meisten wissen ned mal unterschied zwischen mysql und php-mysql)
richtige db connection (sehe jedes mal wieder security fehler auch bei server die 200+ on haben)
sql query's (ja selbst die "fortgeschritten" haben kein plan von)
paypal/superrewards konto eröffnen (traurig aber wahr meistens unfähig)
server logs richtig auslesen um fehler zu ermitteln und zu beheben

die meisten googlen zwar aber einfach nur falsch

anfänger themen wären z.b. noch aufbau einer .lod, aufbau der files/datenbank/client etc.

Würde noch das hinzufügen:
- verschiedene Automatisierungen (z.B. Cashscripts oder Loyalitätsscripts)
- Subdomains
- Error catch
- Loging

Wobei ich der Meinung bin man muss nicht alles wissen, aber ein bisschen googeln und Hirn einschalten gehört auch dazu. Dieser Fall von Damona heißt bestimmt Frezona :D.

Spielbasierend:
- z.B. Icons hinzufügen (Skill, Item, ...)
- Font changen
- Release eines ps.dat Editors :)
- ach und kp vllt. fällt mir später noch mehr ein... viel wurde ja schon erwähnt bzw. sollte schon klar sein zu erwähnen.


All times are GMT +2. The time now is 23:54.

Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.